Eri*_*ich 20 deployment api rest playframework openshift
我们正在使用Play Framework构建一个完全RESTful的后端.我们还在构建一个单独的Web前端,该前端具有不同的技术堆栈,可以调用RESTful API.
我们如何部署这两个应用程序,使它们具有相同的域名,一些url用于后端API,一些用于前端视图?
例如,访问MyDomain.com意味着前端显示主页,但发送GET到MyDomain.com/product/24意味着后端返回带有产品信息的JSON对象.另一种可能性是,如果Web浏览器查看MyDomain.com/product/24,则前端显示HTML页面,该网页是通过对同一URL的后端调用构建的.
最后,我们需要两个专用服务器吗?或者可以将前端和后端部署在同一台服务器上(例如OpenShift,Heroku)
Mah*_*ndi 13
我想到了一个不同的解决方案。我要将后端部署到子域,例如
http://api.myapp.example/
并将前端部署到主域:
http://myapp.example/
但我认为你最好使用 2 个不同的主机,一个用于前端,一个用于后端(我搜索了 Google,这是我调查的结果
bie*_*ior 11
毫无疑问,最简单,最干净的方法是创建一个为BE和FE提供数据的应用程序,其中您通过URL,伪路由区分响应(JSON与HTML):
GET /products/:id controllers.Frontend.productHtml(id)
GET /backend/products/:id controllers.Backend.productJson(id)
Run Code Online (Sandbox Code Playgroud)
优点:
如果您真的决定创建一个两个独立的应用程序,请使用一些HTTP服务器作为代理 - 例如nginx- 因此它会将所有请求发送domain.tld/*到在端口工作的应用程序9000(将用HTML回答)但请求domain.tld/backend/*重定向到应用程序9001使用JSON 在端口上工作.
如果您真的要根据调用者使用JSON或HTML进行响应,您可以尝试比较标头以检查请求是从浏览器发送还是从每个控制器中的AJAX调用发送,但请相信我这将成为一个比您更快的噩梦. ..插入硬币,选择风味