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

Rav*_*mar 2 java spring spring-restcontroller

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

Suk*_*ngh 9

不,您不能在具有不同请求正文类型但相同媒体类型的 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";
  }
Run Code Online (Sandbox Code Playgroud)

如果你有不同的媒体类型,那么它会。下面将工作:

  @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";
  }
Run Code Online (Sandbox Code Playgroud)

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


Sum*_*nde 5

我需要相同的 url 后映射,但它给了我一个错误,所以我添加了不同的参数,它对我有用

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

//url2 post mapping
@PostMapping(value = "/applicant/{step}", params = "data")
Run Code Online (Sandbox Code Playgroud)

如果以下任何一项不同(如上述答案所述),那么您可以拥有相同的 URL 后映射 路径、方法、参数、标头、消耗、产生

就我而言,参数不同