我可以在ExchangeFilterFunction上访问请求/响应正文吗?

时间:2018-01-04 20:56:38

标签: spring reactive-programming spring-webflux

使用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,请解释一下:)

0 个答案:

没有答案