使用 webClient 的 HttpRequest 和 HttpResponse 的自定义日志格式

问题描述 投票:0回答:1

我需要以自定义格式记录 HttpRequest 正文和 HttpResponse 正文。 例如 “发送请求。标头:{},正文:{},uri:{}”

如何获取请求正文?

我正在尝试这个:

log.info("Send request. Headers: {}, Body: {}, uri: {}", request, headers, path);
        return webClient.post()
                .uri(path)
                .headers(httpHeaders -> {....})
                .bodyValue(request)...

但是在这种情况下,日志并不对应于发送请求的事实,而只是正在形成的反应器管道的一部分

我可以在发送/接收时以自定义格式记录 HttpRequest 正文和 HttpResponse 正文吗?

java spring-webflux project-reactor spring-webclient
1个回答
0
投票

您不能按照目前的方式进行操作。

您可能可以使用finally子句进行一些解决,但是您需要将

HttpResponse
存储到变量中,然后记录响应,然后返回。

类似:

var response = webClient.post()...
log.info("Got response. Headers: {}, Body: {}, uri: {}", response.headers(), response.body(), response.uri());
return response;
© www.soinside.com 2019 - 2024. All rights reserved.