如果使用相同的有效负载来发出另一个请求,应使用哪种RequestBody类型?

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

背景我们正在使用第三方供应商的API]

问题陈述:我正在围绕另一个API构建包装API。我将从客户端接收到包装API的相同JSON有效负载也将用于向原始API发出HTTP请求。

当前,我正在将反序列化为字符串的JSON转换。如果有效负载只是通过包装API传递到原始API,这是正确的方法吗?换句话说,对于我的用例来说@RequestBody类型String可以吗,还是我仍然需要反序列化为Java对象?

包装用例如果多个团队使用了来自第三方供应商的API,那么如果我们要更换供应商,则所有团队都必须进行更改。如果我们创建一个包装器,则只需要一个团队进行更改。该包装器中没有任何处理。

控制器代码

@RestController
@RequestMapping(value = FolderController.PATH, produces = MediaType.APPLICATION_JSON_VALUE)
public class PersonController(){
    static final String PATH = "/person";
    private final PersonService personService;

@Autowired
public PersonController(PersonService personService){
    this.personService = personService
}

@PostMapping
@ResponseBody
public String createPerson(@RequestBody String requestBody){ 
    return personService.createPerson(requestBody);
}   
java spring-boot api-design
1个回答
2
投票

是否需要反序列化取决于包装程序需要进行哪些处理。如果您只是想进一步传递请求而不更改它,则应该可以。

但是,如果只需要代理请求,请考虑使用Smiley's HTTP Proxy Servlet来完成此任务。或者,如果要包装API以实现围绕它的安全性,请考虑使用Spring cloud gateway

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