WebClient是Spring WebFlux
模块提供的一个非阻塞的基于响应式编程的进行HTTP
请求的客户端工具。
引入WebFlux
依赖则可使用WebClient
:
1 | <dependency> |
1. 创建WebClient实例
WebClient
接口提供了三个不同的静态方法(create()
,create(String baseUrl)
,builder()
)和一个内部类(WebClient.Bulider
)来创建WebClient
实例:
1 | /** |
2. GET 请求
2.1 发起GET请求
1 |
|
2.2 GET请求参数传递
1 |
|
3. POST请求
3.1 发起POST请求
1 |
|
3.2 POST请求参数传递
1 |
|
4. 请求异常处理
使用WebClient
发送请求时, 如果接口返回的不是200
状态(而是4xx
、5xx
这样的异常状态),则会抛出WebClientResponseException
异常。
1 |
|
5. Exchange获取完整的请求响应结果
前面我们都是使用retrieve()
方法是直接获取响应体的内容。
使用exchangeToMono()
和exchangeToFlux()
方法获取完整的代表响应结果的对象,通过该对象我们可以获取响应码、contentType
、contentLength
、响应消息体等。
1 |
|
6. WebClient在Spring Cloud中的使用
引入依赖:
1 | <dependency> |
编写配置,创建WebClient.Bulider
类型的Bean
,加上@LoadBalaced
为WebClient
增加负载均衡的支持。
1 | import org.springframework.cloud.client.loadbalancer.LoadBalanced; |
编写Controller,客户端实现访问服务端资源,并对外提供访问接口:
1 |
|