SpringMVC - dispatcher servler 的 url 模式样式
SpringMVC - dispatcher servler's url pattern style
我正在尝试使用 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的请求只提供ajax 服务通过 json 数据。
那么在这种情况下使用选项C是否合适,或者它有一些不好的副作用?
对于 RESTful 服务,我将选择 选项 B,考虑使用 REST
执行 CRUD
操作。您可以将 url-pattern
映射为 ,
config pattern as: <url-pattern>/api/*</url-pattern>
因此,要执行添加,您只需确保 post 页面中的 JSON 对象并具有 url 之类的 /api/add
在删除的情况下,您可以简单地遵循相同的操作。假设您要使用其 id 从列表中删除 object
。你可以简单地把它写成,
/api/delete/${id}
并像这样处理它,
@RequestMapping(value="/{id}", method=RequestMethod.GET)
如果你的目标是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 设置一个专用映射,如果您的应用还提供了一个不使用 api
的网络界面
我正在尝试使用 springMVC
.
当为 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的请求只提供ajax 服务通过 json 数据。
那么在这种情况下使用选项C是否合适,或者它有一些不好的副作用?
对于 RESTful 服务,我将选择 选项 B,考虑使用 REST
执行 CRUD
操作。您可以将 url-pattern
映射为 ,
config pattern as: <url-pattern>/api/*</url-pattern>
因此,要执行添加,您只需确保 post 页面中的 JSON 对象并具有 url 之类的 /api/add
在删除的情况下,您可以简单地遵循相同的操作。假设您要使用其 id 从列表中删除 object
。你可以简单地把它写成,
/api/delete/${id}
并像这样处理它,
@RequestMapping(value="/{id}", method=RequestMethod.GET)
如果你的目标是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 设置一个专用映射,如果您的应用还提供了一个不使用 api
的网络界面