在我的组织中,当我想要公开一个API时,我必须用一个夸张的契约来声明它,任何更新都是一样的,而且可能需要几个星期的时间才能考虑到创建或更改。
这就是为什么我们的想法是只为我们需要公开的所有API声明一个契约,并在一个可应用的反向代理中管理路由(请求将包括必要的元数据以允许路由到适当的端点):
{
"genericHttpRequest" : base64encodedByteArrayOfAnyHttpRequest
}现在的问题是:如何在不重新实现HTTP的情况下管理此请求?有没有可能把字节数组放回结构化的HttpServletRequest中?
/**
* Manage a generic request
*/
@RequestMapping(value = "/genericRequest", method = RequestMethod.POST)
public @ResponseBody void manageGenericRequest(@RequestBody GenericHttpRequestDto body) {
byte[] genericHttpRequest = body.getGenericHttpRequest();
//(...)
}发布于 2019-07-10 03:47:41
如果HttpServletRequest被设置为方法参数,Spring将注入它。此外,通配符路径映射将使方法能够与每个请求相匹配:
@RestController
@RequestMapping("/generic-endpoint/**")
public class DemoController {
@RequestMapping
public ResponseEntity<Object> genericGetRequest(HttpServletRequest httpServletRequest) {
return ResponseEntity.ok().body(httpServletRequest.getMethod());
}
}您可以选择返回一个ResponseEntity,以获得对您的HTTP响应的更多控制。
https://stackoverflow.com/questions/56958692
复制相似问题