我有一个带有PostMapping的REST端点,该端点应该能够接受正文中的不同对象,并根据键的存在对其进行映射。

当我对两个函数使用相同的PostMapping时,它给我一个“模棱两可的映射”错误。

当我使用类似于https://www.baeldung.com/spring-requestmapping的参数时,即使在请求正文中存在specialKey,也会调用默认映射。

有什么解决方法可以做到这一点?

@PostMapping(value = "/classes", params = {"specialKey"})
public ResponseEntity<Class> createClass(@Valid @RequestBody SpecialClass class) throws URISyntaxException {
    // do something special
}

@PostMapping("/classes")
public ResponseEntity<Class> createClass(@Valid @RequestBody Class class) throws URISyntaxException {
    // do something
}

最佳答案

基于Mapping the same url to different methods based on request body in spring,这是不可能的(或者至少在当时是不可能的)。 params需要一个单独的请求参数,它不能用于在请求正文中查找类似内容。

您可以在URI中包含参数,特殊端点为/classes?specialKey,普通端点为/classes。但是我只会使用不同的路径。

10-08 08:23