2014-10-29 45 views
2

我正在开发一个使用Spring引导的应用程序。我试着用GET,POST,DELETE等所有表示动词也都工作的很好。通过使用PUT方法,它不支持在春季启动。是否需要添加任何新配置。如何在Springboot Restcontroller中使用PUT方法?

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

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

请求方法“把”不支持

+0

正在使用的是何种版本的春天?该网址看起来是什么“不起作用”? – Gimby 2014-10-29 08:46:36

+0

Spring引导1.1.1和URL是这样的http:// localhost:8000/student/info?stdName = test – 2014-10-29 08:50:59

+0

您有2个请求映射合并成一个单一的方法。 '@RequestMapping(value =“/ student/info”,method = RequestMethod.PUT)'。除此之外,您可能还需要将'HttpPutFormContentFilter'添加到您的过滤器列表中。 – 2014-10-29 09:09:17

回答

5

此代码将正常工作。您必须在课程级别或功能 级别指定请求映射。

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

感谢pratheesh ...你做了我的一天。它工作正常 – 2014-10-30 06:38:13

1

你试过以下请求映射:

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

没有必要分出值和请求的方法URI。

+0

对不起,现在尝试它仍然不工作 – 2014-10-29 09:26:52

+1

@AravindCheekkallur您使用的是什么版本的Spring,并且您添加了过滤器'HttpPutFormContentFilter'。此外,你有你的启动配置Java类 - 它应该有@ @ EnableAutoConfiguration' – blackpanther 2014-10-29 09:29:36

0

您可以在类之前添加@RestController注释。

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

我会见春天开机1.5同样的问题*,我的固定它。请按照:

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

添加此豆

@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