我正在将Java Spring WebFlux用于客户端和服务器,并且我想通过向客户端和服务器添加自定义标头来自定义客户端到服务器的请求。我已经将WebFilter用于其他目的,但似乎仅适用于传入的请求和响应(例如来自FE的请求及其响应)。
答案 0 :(得分:2)
有多种指定自定义标头的方法。
如果标头是静态的,则可以在WebClient
实例创建期间使用defaultHeader
或defaultHeaders
方法进行指定:
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 -> request.headers().add("headerName", getHeaderValuePer(request)))
)
.build();
如果标头是动态的,并且每次使用WebClient
时都是特定的,则可以为每个调用配置标头:
webClient.get()
.header("headerName", getHeaderValue(params))
.retrieve();