同一方法的@PutMapping和@PostMapping注释

时间:2017-12-25 01:12:42

标签: java spring spring-mvc spring-boot

我想将Put和Post映射请求应用于如下所示的方法。它适用于PUT,但不适用于POST请求。我错了什么?

@RestController
@RequestMapping("/PQR")
public class XController {

    @PutMapping("xyz")
    @PostMapping("xyz")
    public MyDomainObject createOrUpdateDAO(
            HttpServletRequest request, 
            @RequestBody String body) throws IOException {
        //...
    }
}

当我发出POST请求时,我得到一个405 HTTP状态代码:

  

[nio-8080-exec-3] o.s.web.servlet.PageNotFound:不支持请求方法'POST'

如果我查看this example,同样的方法会为GET和POST请求映射相同的方法。

@RequestMapping(value="/method3", method = { RequestMethod.POST,RequestMethod.GET })
@ResponseBody
public String method3() {
    return "method3";
}

1 个答案:

答案 0 :(得分:6)

删除@PostMapping@PutMapping注释,并将method添加到@RequestMapping,即:

@RequestMapping(value={"/PQR", "xyz"},
    method={RequestMethod.POST,RequestMethod.PUT})