簡體   English   中英

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

[英]How use PUT method in Springboot Restcontroller?

正在使用 Spring boot 開發應用程序。我嘗試使用所有表示動詞,如 GET、POST、DELETE,它們也都工作正常。 通過使用 PUT 方法,它在 spring boot 中不支持。 我是否需要添加任何新配置。

Put 方法僅適用於沒有任何參數的請求。 如果我添加任何查詢參數或表單數據,它就不起作用。 請任何專業人士幫助我解決這個問題。

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

不支持請求方法“PUT”

此代碼將正常工作。 您必須在類級別或功能級別指定請求映射。

@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 的值和請求方法分開。

從 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";
}

我在 spring boot 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

您可以在課程之前添加 @RestController 注釋。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM