java - 通过 WebFlux 中的过滤器向传出请求添加标头
问题描述
我正在为客户端和服务器使用 Java Spring WebFlux,并且我想通过向其添加自定义标头来自定义从客户端到服务器的请求。我已经将 WebFilter 用于另一个目的,但它似乎只适用于传入的请求和响应(例如来自 FE 的请求和对它的响应)。
解决方案
有多种方法可以指定自定义标题。
如果标头是静态的,您可以在WebClient
实例创建期间使用defaultHeader
ordefaultHeaders
方法指定它们:
WebClient.builder().defaultHeader("headerName", "headerValue")
WebClient.builder().defaultHeaders(headers -> headers.add("h1", "hv1").add("h2", "hv2"))
如果标头是动态的,但所有请求的标头值生成都是通用的,则可以在实例创建ExchangeFilterFunction.ofRequestProcessor
期间使用配置:WebClient
WebClient
.builder()
.filter(ExchangeFilterFunction.ofRequestProcessor(
request -> Mono.just(ClientRequest.from(request)
.header("X-HEADER-NAME", "value")
.build())
)
.build();
如果每次使用时标头都是动态且特定的WebClient
,则可以为每次调用配置标头:
webClient.get()
.header("headerName", getHeaderValue(params))
.retrieve();
推荐阅读
- python - 根据索引测量数据帧的时间差
- mongodb - mongodb在wiredtiger错误后崩溃-空间不足
- django - 带有 django redis celery 的流框架
- c++ - 为什么我可以计算出对象变量?
- mysql - MySql 版本 8.0.17 平均 datediff
- virtualbox - 修改 BOOTABLE .iso 文件
- arrays - 如何以角度格式化响应数组?
- python-3.x - 如何取消分组列组并使用熊猫将它们转换为行?
- python - 如何在 Python 中按属性(数字前的字符串)对 XML 进行排序
- selenium - 使用 seleniumrequest 模块时有没有办法设置 chrome 选项?