Java 如何在Spring Boot Webflux中克隆ServerResponse

Java 如何在Spring Boot Webflux中克隆ServerResponse,java,spring-boot,spring-webflux,Java,Spring Boot,Spring Webflux,我正在为我的REST web应用程序使用Spring Boot2.0.1.RELEASE和functional endpoint。我想为所有传出响应添加一个自定义头,我有一个过滤器。我面临的问题是,如何克隆由底层处理程序创建的ServerResponseServerResponse.from生成一个新的ServerResponse,但只包含标题和状态。如何复制身体?ServerResponse中的大多数方法都为您提供了一个健美师,通过健美师,您可以使用BodyInserters对象(最好是其中一

我正在为我的REST web应用程序使用Spring Boot
2.0.1.RELEASE
和functional endpoint。我想为所有传出响应添加一个自定义头,我有一个过滤器。我面临的问题是,如何克隆由底层处理程序创建的
ServerResponse
ServerResponse.from
生成一个新的
ServerResponse
,但只包含标题和状态。如何复制身体?

ServerResponse中的大多数方法都为您提供了一个健美师,通过健美师,您可以使用BodyInserters对象(最好是其中一种方法)添加身体。见下文:-

ServerResponse.BodyBuilder bodyBuilder = ServerResponse.status(HttpStatus.OK);
bodyBuilder.body(BodyInserters.fromObject("test"));

如果我没有说清楚,我深表歉意,但我的全部意图是添加更多的标题(到所有传出的响应中),我想在一个常见的位置(例如过滤器)这样做。我不想篡改每个处理程序已经创建的响应体;而不是插入几个标题。因此,我不能像你建议的那样使用
BodyInserters
。你能将你的筛选代码添加到你的问题中,看看你到目前为止有什么。请检查,文件是
com.demo.fn.web.filter.RequestTxContextFilter
。在当前代码中,我得到的响应是空正文HTTP/1.1200ok内容类型:application/json;charset=UTF-8 X-Trace-Id:34cb3eb8-9e66-4a02-83f1-0071a5c64516内容长度:0 someCommonHeader:commonvalue你有没有发现这个问题?这似乎是API的一个非常奇怪的限制…我已经通过
WebFilter
完成了。请检查一下课程。这允许修改请求和响应头
exchange.getResponse().getHeaders().add(“X-Server-Trace-Id”,span.context().traceIdString())