Spring-可以在post方法的请求映射中提供相同的url吗?

时间:2018-11-28 12:00:23

标签: java spring spring-restcontroller

在两种不同的post方法的请求映射中可以使用相同的url,只是请求主体不同。

3 个答案:

答案 0 :(得分:0)

是的,但是您需要在RequestMapping批注中指定唯一的参数签名:

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
}

}

`

答案 1 :(得分:0)

不,您不能在具有不同请求主体类型但媒体类型相同的post方法的请求映射中提供相同的url。下面将不起作用:

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

如果您使用其他媒体类型,那么它将。下面将起作用:

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

您的RequestMapping在至少一个条件上应该有所不同; path,method,params,headers,consumes,produces

答案 2 :(得分:0)

我需要相同的网址发布映射,但是这给了我一个错误,所以我添加了不同的参数,并且对我有用

//url1 post mapping
@PostMapping(value = {"/applicant/{step}" ,params = "validatedata")

//url2 post mapping
@PostMapping(value = {"/applicant/{step}" ,params = "data")

如果以下任何一项不同(如上述答案所述),那么您可以具有相同的网址发布映射 路径,方法,参数,标题,消费,产生

在我看来,参数是不同的