基于RequestBody中的键区分Spring Boot PostMapping

问题描述 投票:0回答:1

我有一个带有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
}
java spring spring-boot spring-restcontroller
1个回答
2
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.