代码之家  ›  专栏  ›  技术社区  ›  Don Rhummy

使用SpringBoot2WebClient,以线程安全/每个请求的方式,如何发送每个请求的差异头?

  •  0
  • Don Rhummy  · 技术社区  · 6 年前

    AsyncRestTemplate 从传入请求获取到 RestController 端点,并将它们放入任何 exchange 透过 .

    WebClient . 看起来,如果你建立一个 网络客户端

    WebClient client = WebClient.builder()
        .baseUrl( "http://blah.com" )
        .defaultHeader( "Authorization", "Bearer ey..." )
        .build();
    

    而我可以使用 client.mutate() ,它实例化了一个全新的WebClient对象。我不希望每次请求都创建一个新的。没有办法保持沉默吗 是否有每个请求的标头和其他参数?

    0 回复  |  直到 6 年前
        1
  •  1
  •   Brian Clozel    6 年前

    WebClient

    当然,您可以按每个请求更改请求头,如下所示:

    Mono<String> result = this.webClient.get()
          .uri("/greeting")
          .header("Something", "value")
          .retrieve().bodyToMono(String.class);
    

    如果希望在发送请求之前使用类似拦截器的机制对请求进行变异,可以配置 网络客户端 带有筛选器的实例:

    WebClient
        .builder()
        .filter((request, next) -> {
                // you can mutate the request before sending it
                ClientRequest newRequest = ClientRequest.from(request)
                        .header("Something", "value").build();
                return next.exchange(newRequest);
    })
    

    the Spring Framework documentation about WebClient .