使用WebClient
进行交换,由自定义ExchangeFilterFunction
过滤:
@Override
public Mono<ClientResponse> filter(ClientRequest request, ExchangeFunction next) {
return next.exchange(request)
.doOnSuccess(response -> {
// ...
});
}
尝试使用response.bodyToMono()
多次访问响应正文将导致底层HTTP客户端连接器抱怨只允许一个接收者。 AFAIK,无法访问正文的发布者,以cache()
发出信号(而且我不确定它是否是一个好主意,资源方面),以及无法以允许访问其正文的方式变异或装饰response
对象(就像在服务器端使用ServerWebExchange
一样)。
这是有道理的,但我想知道是否有任何方法可以通过这种过滤器的形式订阅响应机构的发布者。我的目标是记录给定WebClient
实例发送/接收的请求/响应。
我是反应式编程的新手,所以如果这里有任何明显的no-nos,请解释一下:)