SpringMVC-调度程序服务者的URL模式样式


问题内容

我正在尝试使用构建一个宁静的样式API springMVC

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

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

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

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

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


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

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

在这种情况下,内置的servlet将被覆盖,例如jsp将无法正常工作。
但是我没有任何东西jsp,而且,html / js / css / image / document / music / video所有静态资源都放在nginxTomcat所服务的另一个端口或服务器上,要求tomcat仅通过json数据提供ajax服务。
因此,在这种情况下,使用选项C是否合适,还是有一些不良影响?


问题答案:

如果您的目标是宁静的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的网络界面,则我认为最好为api提供专用的映射