webclient set header 反应方式

webclient set header reactive way

我是 WebFlux 和反应式编程方式的新手。我正在使用 WebClient 调用 REST 服务,在进行调用时,我需要设置 HTTP header,HTTP header 的值来自反应流,但是 header WebClient 上的方法只接受字符串值...

Mono<String> getHeader() {
    ...
}

webClient
  .post()
  .uri("/test")
  .body(Mono.just(req),req.getClass())
  .header("myHeader",getHeader())
...

上面的行不会编译,因为 header 方法将字符串作为第二个参数。如果值来自反应流,我如何设置 header?

您只需要使用 flatMap 链接 getHeader 和 Web 客户端请求来创建反应流

return getHeader()
 .flatMap(header -> 
        webClient
           .post()
           .uri("/test")
           .header("myHeader", header)
           .body(BodyInserters.fromValue(req))
           ...
)