背景我们正在使用第三方供应商的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);
}
是否需要反序列化取决于包装程序需要进行哪些处理。如果您只是想进一步传递请求而不更改它,则应该可以。
但是,如果只需要代理请求,请考虑使用Smiley's HTTP Proxy Servlet来完成此任务。或者,如果要包装API以实现围绕它的安全性,请考虑使用Spring cloud gateway