问题
Is that possible to use same url in request mapping for two different post method, only request body differs.
回答1:
No, you can't give same url in request mapping of post method having different request body type but same media type. Below won't work:
@PostMapping(path = "/hello", consumes = MediaType.APPLICATION_JSON_VALUE)
public String hello(@RequestBody Pojo1 val) {
return "Hello";
}
@PostMapping(path = "/hello", consumes = MediaType.APPLICATION_JSON_VALUE)
public String hello(@RequestBody Pojo2 val) {
return "Hello";
}
If you have different media type, then it will. Below will work:
@PostMapping(path = "/hello", consumes = MediaType.APPLICATION_JSON_VALUE)
public String hello(@RequestBody Pojo val) {
return "Hello";
}
@PostMapping(path = "/hello", consumes = MediaType.TEXT_PLAIN_VALUE)
public String hello(@RequestBody String val) {
return "Hello";
}
Your RequestMapping
should differ on at least one of the conditions; path,method,params,headers,consumes,produces
回答2:
Yes you can do that but you need to specify unique parameters signature in RequestMapping annotation:
public class MyController {
@RequestMapping(method = RequestMethod.POST, params = {"!name", "!name2"})
public String action(HttpServletRequest request, HttpServletResponse response){
// body
}
@RequestMapping(method = RequestMethod.POST, params = "name")
public String action(HttpServletRequest request, HttpServletResponse response,
@RequestParam(value = "name", required = true) String name) {
// body
}
}
`
来源:https://stackoverflow.com/questions/53519006/spring-is-possible-to-give-same-url-in-request-mapping-of-post-method