我正在将Java Spring WebFlux用于客户端和服务器,并且我想通过向客户端和服务器添加自定义 header 来自定义客户端到服务器的请求。我已经将WebFilter用于其他目的,但似乎只适用于传入的请求和响应(例如,来自FE的请求及其响应)。
最佳答案
有多种指定自定义 header 的方法。
如果 header 是静态的,则可以在创建WebClient
实例时使用defaultHeader
或defaultHeaders
方法指定 header :
WebClient.builder().defaultHeader("headerName", "headerValue")
WebClient.builder().defaultHeaders(headers -> headers.add("h1", "hv1").add("h2", "hv2"))
如果 header 是动态的,但是 header 值的生成对于所有请求都是通用的,则可以使用在
ExchangeFilterFunction.ofRequestProcessor
实例创建期间配置的WebClient
:WebClient
.builder()
.filter(ExchangeFilterFunction.ofRequestProcessor(
request -> Mono.just(ClientRequest.from(request)
.header("X-HEADER-NAME", "value")
.build())
)
.build();
如果 header 是动态的,并且每次使用
WebClient
都是特定的,则可以为每个调用配置 header :webClient.get()
.header("headerName", getHeaderValue(params))
.retrieve();