首页 > 解决方案 > 在 Spring Webflux 中捕获响应

问题描述

有没有办法在 Spring Webflux 中捕获响应体。我知道这违反了反应的原则,但是我需要捕获正文并返回响应。我正在使用 ExchangeFilterFunction。

 public Optional<ExchangeFilterFunction> buildEnricher() {

    return Optional.of(ExchangeFilterFunction.ofResponseProcessor(clientResponse -> {
            return clientResponse.bodyToMono(String.class)
                    .flatMap(body -> {
                        System.out.println(body);
                        return Mono.just(clientResponse);
                    });
    }));

这最终会消耗正文并发送一个空的客户端响应。反正我也可以把尸体送回去吗?

标签: spring-webflux

解决方案


您可以选择克隆客户端响应。

ClientResponse responseClone = ClientResponse.from(clientResponse)

您现在可以从体内排出responseClone并返回Mono.just(clientResponse)


推荐阅读