
简单介绍 org.springframework:spring-webflux 中的请求响应接口。

Figure 1. 请求响应模型
客户端用于发送请求获得响应。相关接口包括 ExchangeFunction 和 WebClient,WebClient 封装至 ExchangeFunction,可以通过链式写法构造并发送请求。

Figure 2. 交换函数类图
用法示例
//构造交换函数
ExchangeFunction exchangeFunction = ExchangeFunctions.create(new ReactorClientHttpConnector());
//构造请求
ClientRequest<Void> request = ClientRequest.method(HttpMethod.GET, "https://example.com/resource").build();
//发送请求并获得响应
Mono<String> result = exchangeFunction
.exchange(request)
.then(response -> response.bodyToMono(String.class));
Figure 3. web客户端类图
用法示例
Mono<String> result = WebClient.builder()
.baseUrl("https://example.com/resource")
.build()
.get()
.retrieve()
.bodyToMono(String.class);ExchangeFunction 的分步操作,通过 WebClient 的链式操作实现。

Figure 4. 客户端拦截器原理
用法示例(基于 ExchangeFunction )
ExchangeFunction exchangeFunction = ExchangeFunctions.create(new ReactorClientHttpConnector());
ClientRequest<Void> request = ClientRequest.method(HttpMethod.GET, "https://example.com/resource").build();
Mono<String> result = exchangeFunction
//添加一个过滤器,什么也没做
.filter((clientRequest, exchangeFunction) -> exchangeFunction.exchange(clientRequest))
.exchange(request)
.then(response -> response.bodyToMono(String.class));用法示例(基于 WebClient )
Mono<String> result = WebClient.builder()
.baseUrl("https://example.com/resource")
//添加一个过滤器,什么也没做
.filter((clientRequest, exchangeFunction) -> exchangeFunction.exchange(clientRequest))
.build()
.get()
.retrieve()
.bodyToMono(String.class);包含客户端请求的具体信息。

Figure 5. 客户端请求类图
包含客户端响应的具体信息。

Figure 6. 客户端响应类图
服务端处理流程如下:

Figure 7. 服务端处理流程

Figure 8. 服务端路由函数类图
由程序员最终实现的末端函数。

Figure 9. 服务端处理函数类图

包含请求的具体信息。

Figure 10. 服务端请求
包含响应的具体信息。

Figure 11. 服务端响应
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。