如何将post方法应用于spring中的所有请求映射
如何访问从不同url-s到一个控制器方法的请求POST数据,例如,我有如何将post方法应用于spring中的所有请求映射,spring,http,spring-mvc,Spring,Http,Spring Mvc,如何访问从不同url-s到一个控制器方法的请求POST数据,例如,我有/countries&/countries/{id}url,第一个非常好,因为我的代码是 @RequestMapping(value = {"/{id}", "/{id}/"}, method = RequestMethod.GET) public String getCountry(@PathVariable(value = "id", required = true) int id,ModelMap model) {
/countries
&/countries/{id}
url,第一个非常好,因为我的代码是
@RequestMapping(value = {"/{id}", "/{id}/"}, method = RequestMethod.GET)
public String getCountry(@PathVariable(value = "id", required = true) int id,ModelMap model) {
}
@RequestMapping(method = RequestMethod.POST)
public String deleteCountry(ModelMap model,HttpServletRequest request) {
}
当我试图从第二个url请求POST数据时,我得到
HTTP Status 405 - Request method 'POST' not supported
这是可以预期的,因为我还没有用这个映射发布方法,但是如果我要用一个方法对一个映射,我的代码会太难看和糟糕,我可以使用什么解决方案呢 Hum为什么不将值的“数组”也添加到第二个方法中
@RequestMapping(value = {"", "/{id}"},method = RequestMethod.POST)
public String deleteCountry(ModelMap model,
HttpServletRequest request) {
顺便说一句,使用POST-verb调用看起来将删除资源的操作似乎是错误的,应该使用delete-verb
编辑 但实际上,您应该创建两种方法,因为这两种方法不应该做相同的事情
POST
/countries
应创建国家资源
POST
/countries/{id}
应该做些别的事情
如需更新,请将/countries/{id}
对于delete,更喜欢delete
/countries/{id}嗯,为什么不将值的“数组”也添加到第二个方法中呢
@RequestMapping(value = {"", "/{id}"},method = RequestMethod.POST)
public String deleteCountry(ModelMap model,
HttpServletRequest request) {
顺便说一句,使用POST-verb调用看起来将删除资源的操作似乎是错误的,应该使用delete-verb
编辑 但实际上,您应该创建两种方法,因为这两种方法不应该做相同的事情
POST
/countries
应创建国家资源
POST
/countries/{id}
应该做些别的事情
如需更新,请将/countries/{id}
对于删除,首选
delete
/countries/{id}
有一种方法可以为不同的控制器设置单独的处理程序拦截器。
有关详细信息,请参阅此链接
但是我觉得,您可以创建一个通用的方法来共享业务逻辑。
因为拦截器为您的控制器提供了代理类,这是可以避免的,除非您有复杂的逻辑。有一种方法可以为不同的控制器提供单独的处理程序拦截器。 有关详细信息,请参阅此链接 但是我觉得,您可以创建一个通用的方法来共享业务逻辑。
因为拦截器为您的控制器提供了代理类,除非您有复杂的逻辑,否则可以避免使用该类。我通过url中的regexp找到了一个解决方案,这是否只有一种可能的方法?“丑陋和可怕”——您必须以某种方式提供实现,对吗?这怎么会让你的代码变得糟糕呢?我通过url中的regexp找到了一个解决方案,这是唯一可能的方法吗?“丑陋和糟糕”——你必须以某种方式提供一个实现,对吗?这怎么会让你的代码变得糟糕呢?事实上,请求映射的值可以是“/**”我在谷歌的url中没有找到任何regexp。删除和放置方法?是的,这很好,不幸的是,我的客户想要一些没有这些方法的RPC风格的东西。但是我不明白
/countries
上的POST
和/countries/{id}
上的POST
应该以相同的方法结束,做同样的事情。一个有唯一的资源标识符,而不是另一个?好吧,如果我们想在国家视图层和单一国家视图中放置删除按钮,我认为这是web开发人员的提供任务,没有什么特别的。所以你想删除一个还是删除一个?Imo将2个不同的路径绑定到一个入口点,然后基于空检查拆分行为,这不是最可读的方法。但它肯定能工作…不,例如,我想删除国家列表中的一个国家(/countries)和完整描述视图(extand view)/country/{id}中的同一个国家。事实上,请求映射的值可以是“/**”,我在谷歌的url中找不到任何regexp。删除和放置方法?是的,这很好,不幸的是,我的客户想要一些没有这些方法的RPC风格的东西。但是我不明白/countries
上的POST
和/countries/{id}
上的POST
应该以相同的方法结束,做同样的事情。一个有唯一的资源标识符,而不是另一个?好吧,如果我们想在国家视图层和单一国家视图中放置删除按钮,我认为这是web开发人员的提供任务,没有什么特别的。所以你想删除一个还是删除一个?Imo将2个不同的路径绑定到一个入口点,然后基于空检查拆分行为,这不是最可读的方法。但它肯定能工作……不,例如,我想删除国家列表中的一个国家(/countries)和它的完整描述视图(extand view)/country/{id}中的同一个国家。