gpt4 book ai didi

api - 在同一域中分离后端和前端应用程序?

转载 作者:行者123 更新时间:2023-12-02 19:15:10 26 4
gpt4 key购买 nike

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

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

例如,访问MyDomain.example意味着前端显示主页,但发送GET到MyDomain.example/product/24意味着后端- end 返回包含产品信息的 JSON 对象。另一种可能性是,如果 Web 浏览器查看 MyDomain.example/product/24,则前端会显示 HTML 页面,并且该网页是通过对同一 URL 的后端调用构建的。

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

最佳答案

你要把自己挖得很深:)

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

GET  /products/:id          controllers.Frontend.productHtml(id)
GET /backend/products/:id controllers.Backend.productJson(id)

好处:

  • 单一部署(比如 Heroku)
  • 由一个应用管理的命名空间
  • 在其中一个应用发生更改后,无需再修改多个应用中的模型

否则如果

如果您确实决定创建两个独立的应用程序,请使用某个 HTTP 服务器作为代理 - 例如 nginx - 这样它将把所有请求发送到 domain.tld/* 到在端口 9000 工作的应用程序(将使用 HTML 应答),但对 domain.tld/backend/* 的请求重定向到在端口 工作的应用程序>9001 使用 JSON 进行响应。

其他

如果你真的要根据调用者的情况使用 JSON 或 HTML 进行响应,你可以尝试比较 header 来检查请求是从浏览器还是从每个 Controller 中的 AJAX 调用发送的,但相信我,这将成为一场噩梦,比你的东西...插入硬币,选择口味

关于api - 在同一域中分离后端和前端应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17980385/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com