Files
rikako-note/spring/webflux/webclient.md
2025-04-21 12:42:42 +08:00

1.6 KiB
Raw Blame History

WebClient

WebClient基于Reactor提供了functional, fluent API

WebClient是非阻塞的其依赖的codecs和server端使用的codecs相同。

Configuration

创建WebClient最简单的方式是通过静态工厂方法:

  • WebClient.create()
  • WebClient.create(String baseUrl)

除此之外,也可以通过WebClient.builder()来指定更多选项:

  • uriBuilderFactory 自定义uriBuilderFactory用于创建UriBuilderUriBuilder包含共享的配置例如base URI等
  • defaultUriVariables: 在拓展uri templates时使用到的默认值
  • defaultHeader对每个请求都包含的headers
  • defaultCookie每个请求都包含的Cookie
  • defaultRequest 对每个请求进行自定义的Consumer
  • filter对于每个请求的client filter
  • exchangeStrategies自定义http message的reader/writer
  • clientConnectorhttp client library设置
  • observationRegistry the registry to use for enabling Observability support
  • observationConvention: an optional, custom convention to extract metadata for recorded observations.

创建WebClient的示例如下

WebClient client = WebClient.builder()
		.codecs(configurer -> ... )
		.build();

一旦被创建后WebClient是不可变的但是,可以对其进行克隆并对副本进行修改,示例如下:

WebClient client1 = WebClient.builder()
		.filter(filterA).filter(filterB).build();

WebClient client2 = client1.mutate()
		.filter(filterC).filter(filterD).build();

// client1 has filterA, filterB

// client2 has filterA, filterB, filterC, filterD