如何将请求标头传播到 SpringBoot 2 中的响应标头

其他

我有 Swagger Codegen 生成的接口。它看起来像这样:

@PostMapping(value = "/ipc/conf", produces = {"application/json", "application/problem+json"}, consumes = {
            "application/json"})
default ResponseEntity<CustomResponseEntity> ipcConfPost(
            @ApiParam(value = "ID", required = true) @RequestHeader(value = "X-Request-ID", required = true) String xRequestID,
            @ApiParam(value = "Value for identifying a single transaction across multiple services up to the backend.", required = true) @RequestHeader(value = "X-Correlation-ID", required = true) String xCorrelationID,
            @ApiParam(value = "The payload to transmit", required = true) @Valid @RequestBody IPcData ipcConfData,
            @ApiParam(value = "The business context is a general classification for a larger number of requests.") @RequestHeader(value = "X-Business-Context", required = false) String xBusinessContext) {
        getRequest().ifPresent(request -> {
            for (MediaType mediaType : MediaType.parseMediaTypes(request.getHeader("Accept"))) {
                if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) {
                    String exampleString = "{ \"id\" : \"id\", \"error\" : \"error\" }";
                    ApiUtil.setExampleResponse(request, "application/json", exampleString);
                    break;
                }
            }
        });
        return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED);
    }

在实现中,我希望获得完整的请求标头列表(我需要在响应中包含其中一些),或者能够获取 API 中未列出的标头的值。问题是我无法更改端点的签名,因为它会在以后的版本中引起很大的麻烦。那么有什么方法可以实现这一点吗?

希腊语

您的代码中已经有请求对象,因此您可以从中获取标头。request.getHeaderNames()然后循环通过它们。

之后,您可以将它们添加到响应中

HttpHeaders responseHeaders = new HttpHeaders();
responseHeaders.set("key", "value");
ResponseEntity.ok().headers(responseHeaders).body("some body");

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从Angular 2响应中获取所有标头?

如何获取Angular 2响应标头

使用 Spring Boot 2 WebClient 从响应中获取标头

Springboot 集成 - 访问 MessageHandler 中的标头

SpringBoot oAuth2位置标头

如何在Struts2拦截器中配置HTTP响应标头?

如何在emscripten wget2函数中获取内容类型的响应标头?

如何从服务器响应角度2中读取内容处置标头

如何在Angular 2中将标头添加到发布请求中?

SpringBoot-解析HTTP请求标头时出错(Oauth2 https端点)

请求标头与响应标头

Angular2 - 如何将 HTTP 标头添加到我的应用程序发送到浏览器的响应中?

HTTP / 2响应标头字段不在Google Chrome中的Pascal Case中

Java:如何从响应中删除标头?

如何从提取中获取响应的标头

如何从RestTemplate中读取响应标头?

使用WebClient将Spring Webflux应用程序中接收到的请求标头传播到下游服务

在 Angular 2 中读取自定义 HTTP 响应标头

Angular2的Http.post在POST方法调用的响应中未返回标头

WireMock:如何配置JSON以在响应中显示请求标头

在请求标头Angular2中设置Cookie

Yii2语法中的标头

如何检索请求的Alamofire响应标头

WOFF2-HTTP内容类型响应标头建议

angular2 / http获取201响应的位置标头

未设置 Struts 2 拦截器响应标头

从ASP.NET Web API 2响应中获取针对跨域http.get请求的Angular中的特定响应标头(例如Content-Disposition)。

喷涂IO,在响应中添加标头

在Servlet中处理响应标头