java - Spring MVC 应用程序中相对 URL 的正确基础是什么?

标签 java api spring-mvc servlets relative-url

我有一个带有 REST Controller 的 Spring MVC 应用程序,它用作 JavaScript、基于 Angular 的前端应用程序的后端。有时需要向前端返回资源的相对URL。

问题是:相对URL应该从什么开始?

假设绝对URL为http://host:port/context-path/servlet-path/service/id ,我看到以下选项:

  • 上下文路径:/context-path/servlet-path/service/id
  • servlet 路径:/servlet-path/service/id
  • 仅请求映射:/service/id

前端应用程序与后端部署在同一个 Web 应用程序中,但位于不同的目录中,例如http://host:port/context-path/gui-app/

最佳答案

由于单页 Web 应用程序(例如基于 Angular 的应用程序)仅通过 REST 之类的 API 与后端进行通信,并且除了 REST API 的 URL 之外不知道任何其他信息,因此您需要将上下文路径变量存储在前端中.

这可以存储在 JSON 配置文件或由所有 Angular JS Controller 共享的全局 Javascript 文件中。

对后端的一个建议是使用 api/<version> REST Controller 名称之前的前缀,这将更容易区分 REST API 和其他 URL。

 http://host:port/context-path/api/v1/servlet-path/service/id

关于java - Spring MVC 应用程序中相对 URL 的正确基础是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33079113/

相关文章:

Java 运行时多态性不适用于不同的参数类型

java - 使用 jfreechart 将 PolarPlot 的角度网格线数量设置为固定值

javascript - 如何向谷歌地图标记添加唯一链接

java - 方法完成后 PostgreSQL 关闭连接

java - 关闭 org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping detectorHandlers

java - 贾克斯RS : How can I run a method automatically everytime my server restarts?

java - 如何让 for 循环并排运行?

ios - Swift4 - 分页

android - 使用 Purchase Status API 验证 Google Play 收据,但总是收到 403 forbidden

java - 我可以创建 spring mvc 自定义验证注释而不链接到 validator 实现吗