我正在将Java Spring WebFlux用于客户端和服务器,并且我想通过向客户端和服务器添加自定义 header 来自定义客户端到服务器的请求。我已经将WebFilter用于其他目的,但似乎只适用于传入的请求和响应(例如,来自FE的请求及其响应)。

最佳答案

有多种指定自定义 header 的方法。

如果 header 是静态的,则可以在创建WebClient实例时使用defaultHeaderdefaultHeaders方法指定 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();

09-10 10:03
查看更多