通过 WebFlux 中的过滤器向传出请求添加 header
Add a header to an outgoing request by a filter in WebFlux
我正在为客户端和服务器使用 Java Spring WebFlux,我想通过向其添加自定义 header 来自定义从客户端到服务器的请求。我已经将 WebFilter 用于另一个目的,但它似乎只适用于传入的请求和响应(例如来自 FE 的请求和对它的响应)。
有多种指定自定义 header 的方法。
如果 header 是静态的,您可以在 WebClient
实例创建期间使用 defaultHeader
或 defaultHeaders
方法指定它们:
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();
如果 headers 是动态的并且每次使用 WebClient
时都是特定的,您可以为每个调用配置 headers:
webClient.get()
.header("headerName", getHeaderValue(params))
.retrieve();
我正在为客户端和服务器使用 Java Spring WebFlux,我想通过向其添加自定义 header 来自定义从客户端到服务器的请求。我已经将 WebFilter 用于另一个目的,但它似乎只适用于传入的请求和响应(例如来自 FE 的请求和对它的响应)。
有多种指定自定义 header 的方法。
如果 header 是静态的,您可以在 WebClient
实例创建期间使用 defaultHeader
或 defaultHeaders
方法指定它们:
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();
如果 headers 是动态的并且每次使用 WebClient
时都是特定的,您可以为每个调用配置 headers:
webClient.get()
.header("headerName", getHeaderValue(params))
.retrieve();