简单介绍 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 删除。