我正在尝试使用 springMVC 构建一个 Restful 风格的 API .

当为 springMVC 的 DispatcherServlet 配置 url-pattern 时,似乎有 2 个选择,我需要一些建议。

选项A:
配置模式为:<url-pattern>*.action</url-pattern>
和操作使用类似 @RequestMapping("/role/add.action") 的路径

选项B:
配置模式为:<url-pattern>/api/*</url-pattern>
和操作使用类似 @RequestMapping("/api/role/add") 的路径

我更喜欢使用没有后缀的样式,但在那种情况下我需要添加一个子路径。

但我不确定在作为后端提供restful API的项目中使用哪个更合适,以浏览器/IOS/Android作为其客户端。


可能有选项C,但我不确定:

配置模式为:<url-pattern>/*</url-pattern>
和操作使用类似 @RequestMapping("/role/add") 的路径

在这种情况下,内置的 servlet 将被覆盖,例如 jsp 将无法正常工作。
但我没有任何 jsp ,还有像 html / js / css / image / document / music / video 这样的静态资源都放在由 nginx 服务的另一个端口或服务器上,请求tomcat只通过json数据提供ajax服务。
那么在这种情况下使用选项 C 是否合适,或者它有一些不良的副作用?

请您参考如下方法:

如果您的目标是 restful api,我的选择是第二个,因为您在 url 中标识了资源;假设你必须管理一个角色资源,你应该有一些像这样的映射:

@RequestMapping("/api/role" method = RequestMethod.POST) 

插入一个新角色(可能是api不允许这样做)

@RequestMapping("/api/role/{roleId}" method = RequestMethod.PUT) 

更新现有角色

@RequestMapping("/api/role/{roleId}" method = RequestMethod.DELETE) 

删除角色

@RequestMapping("/api/role" method = RequestMethod.GET) 

检索角色(您可以通过查询字符串实现一些过滤器)

这同样适用于其他资源(用户等),命名模式相同。

我会避免选项 C,因为我认为如果您的应用程序还提供不使用该 API 的 Web 界面,那么最好为该 API 设置一个专用映射


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!