我有一个带有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
。但是我只会使用不同的路径。