通过WebFlux中的过滤器将标头添加到传出请求中

时间:2019-05-14 04:35:56

标签: java spring spring-webflux

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

1 个答案:

答案 0 :(得分:2)

有多种指定自定义标头的方法。

如果标头是静态的,则可以在WebClient实例创建期间使用defaultHeaderdefaultHeaders方法进行指定:

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();