首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >单独的后端和前端应用程序在同一领域?

单独的后端和前端应用程序在同一领域?
EN

Stack Overflow用户
提问于 2013-07-31 20:31:41
回答 4查看 33.9K关注 0票数 42

我们正在用Play框架构建一个完整的RESTful后端。我们还在构建一个单独的web前端,它将使用不同的技术栈来调用RESTful API。

我们如何部署这两个应用程序,使它们具有相同的域名,其中一些URL用于后端API,另一些用于前端视图?

例如,访问MyDomain.example意味着前端显示主页,但是发送GET到MyDomain.example/product/24意味着后端返回带有产品信息的JSON对象。另一种可能性是,如果一个web浏览器查看MyDomain.example/product/24,那么前端显示一个HTML页面,并且该网页是通过对同一个URL的后端调用生成的。

最后,我们需要两台专用服务器吗?或者可以将前端和后端部署在同一个服务器上(例如,OpenShift、Heroku)。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-08-01 17:09:30

你要挖掘自己..。深:)

毫无疑问,最简单、最干净的方法是创建一个为BE和FE提供数据服务的应用程序,您可以通过URL伪路由来区别响应(JSON与HTML):

代码语言:javascript
运行
复制
GET  /products/:id          controllers.Frontend.productHtml(id)
GET  /backend/products/:id  controllers.Backend.productJson(id)

好处:

  • 单一部署(让我们对Heroku说)
  • 一个应用程序管理的名称空间
  • 在其中一个应用程序更改后,无需修改许多应用程序中的模型

否则如果

如果您真的决定创建两个单独的应用程序,请使用一些HTTP服务器作为代理--例如nginx --因此它将向domain.tld/*发送所有请求到在端口9000工作的应用程序(该端口将使用9000进行应答),但是对domain.tld/backend/*的请求将重定向到使用JSON响应的端口9001上的应用程序。

否则

如果您真的要使用JSON或HTML响应,取决于调用者,您可以尝试比较头,以检查每个控制器中的请求是否是从浏览器或AJAX调用发送的,但是相信我,这将成为一个比您更快的噩梦.插入硬币,选择味道

票数 28
EN

Stack Overflow用户

发布于 2020-11-19 10:45:38

我想出了一个不同的解决方案。我将把后端部署到一个子域,如

http://api.myapp.example/

并将前端部署到主域:

http://myapp.example/

但是我想你最好使用两个不同的主机,一个是前端的,一个是后端的(我搜索了Google,这是我调查的结果。)

票数 11
EN

Stack Overflow用户

发布于 2013-08-09 14:58:51

其他可能性(因此作为单独的答案)是使用在Play 2.1.x中添加的一个Content negotiation,我认为它最接近于您最初想要得到的内容:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17980385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档