Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将post方法应用于spring中的所有请求映射_Spring_Http_Spring Mvc - Fatal编程技术网

如何将post方法应用于spring中的所有请求映射

如何将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) {

如何访问从不同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) {

    }

 @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}中的同一个国家。