gpt4 book ai didi

java - 以通用方式管理任何 HTTP 请求

转载 作者:太空宇宙 更新时间:2023-11-04 09:32:12 25 4
gpt4 key购买 nike

在我的组织中,当我想要公开 API 时,我必须使用 swagger 合约来声明它,对于任何更新都是如此,并且可能需要数周时间才能考虑创建或更改。

这就是为什么我们想到只为我们需要公开的所有 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();

//(...)
}

最佳答案

如果将 HttpServletRequest 设置为方法参数,Spring 将注入(inject)它。此外,通配符路径映射将使方法能够匹配每个请求:

@RestController
@RequestMapping("/generic-endpoint/**")
public class DemoController {

@RequestMapping
public ResponseEntity<Object> genericGetRequest(HttpServletRequest httpServletRequest) {
return ResponseEntity.ok().body(httpServletRequest.getMethod());
}
}

您也可以选择返回 ResponseEntity更好地控制您的 HTTP 响应。

关于java - 以通用方式管理任何 HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56958692/

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