如何在Springboot Restcontroller中使用PUT方法?

我正在使用Spring boot开发一个应用程序。我尝试了所有表示动词,如GET,POST,DELETE都可以正常工作。 通过使用PUT方法,它不支持弹簧启动。 我是否需要添加任何新配置。

Put方法仅适用于请求没有任何参数。 如果我添加任何查询参数或表单数据,它不起作用。 请任何专业人士帮助我解决这个问题。

@RequestMapping("/student/info") @RequestMapping(method = RequestMethod.PUT) public @ResponseBody String updateStudent(@RequestParam(value = "stdName")String stdName){ LOG.info(stdName); return "ok"; } 

请求方法’PUT’不受支持

这段代码可以正常工作。 您必须在类级别或function级别指定请求映射。

 @RequestMapping(value = "/student/info", method = RequestMethod.PUT) public @ResponseBody String updateStudent(@RequestBody Student student){ LOG.info(student.toString()); return "ok"; } 

您是否尝试过以下请求映射:

 @RequestMapping(value = "/student/info", method = RequestMethod.PUT) 

没有必要为URI分隔值和Request方法。

你可以在课前添加@RestController注释。

 @RestController @RequestMapping(value = "/v1/range") public class RangeRestController { } 

从Spring 4.3开始,您可以使用@PutMapping("url") : https : @PutMapping("url")

在这种情况下,它将是:

 @PutMapping("/student/info") public @ResponseBody String updateStudent(@RequestParam(value = "stdName")String stdName){ LOG.info(stdName); return "ok"; } 

我遇到了与春季启动1.5相同的问题。*,我通过以下方式修复了它:

 @RequestMapping(value = "/nick", method = RequestMethod.PUT) public Result updateNick(String nick) { return resultOk(); } 

添加这个bean

 @Bean public TomcatEmbeddedServletContainerFactory tomcatEmbeddedServletContainerFactory() { return new TomcatEmbeddedServletContainerFactory(){ @Override protected void customizeConnector(Connector connector) { super.customizeConnector(connector); connector.setParseBodyMethods("POST,PUT,DELETE"); } }; } 

也可以看看

https://stackoverflow.com/a/25383378/4639921
https://stackoverflow.com/a/47300174/4639921