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
所有静态资源都放在nginx
Tomcat所服务的另一个端口或服务器上,要求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提供专用的映射