gpt4 book ai didi

spring-boot - 如何动态接受不同类类型的RequestBody

转载 作者:行者123 更新时间:2023-12-02 21:50:21 39 4
gpt4 key购买 nike

我正在使用 Spring Boot 。编写rest api对于相同的 api url ,请求 json 结构有所不同我们有什么方法可以应用工厂设计或其他东西

    @RequestMapping(value = "/myservice/{type}", method = RequestMethod.POST)
@ResponseBody
public ResponseEntity<?> myServiceApi(@PathVariable String type,
@RequestBody SomeClass1 somereq) {
// here based on type , the RequestBody can be either SomeClass1 or SomeClass2
// both the SomeClass1 and SomeClass2 has nothing in common .

}

上述代码仅在请求 json 为 SomeClass1 格式时才有效,但我需要它接受 {SomeClass1 , SomeClass2}

最佳答案

您可以通过将 JSON 作为字符串传递到 Controller 方法中,然后将其映射到您期望需要的任何对象来实现此目的:

@PostMapping(value = "/myservice/{type}")
public ResponseEntity<?> myServiceApi(@PathVariable String type,
@RequestBody String somereq) {
ObjectMapper mapper = new ObjectMapper();
if (<something that indicates SomeClass1>) {
SomeClass1 someClass1 = mapper.readValue(somereq, SomeClass1.class);
} else if (<something that indicates SomeClass2>) {
SomeClass2 someClass2 = mapper.readValue(somereq, SomeClass2.class);
}
}

尽管说实话,如果您确实期望具有完全不同结构的机构,我的建议是为这些机构进行单独的 API 调用。

关于spring-boot - 如何动态接受不同类类型的RequestBody,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48279477/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com