如何记录 Spring WebClient 响应

Posted

技术标签:

【中文标题】如何记录 Spring WebClient 响应【英文标题】:How to log Spring WebClient response 【发布时间】:2018-10-17 08:52:30 【问题描述】:

我是 Spring WebClient 的新手。有人可以建议从另一个 Web 服务记录 REST 请求和响应的最佳方式吗?

我已经在问题中看到了一个记录请求的示例,但还必须记录响应和对 POST 调用的请求。 how to log Spring 5 WebClient call

谢谢。

【问题讨论】:

目前还没有找到比直接解码成字符串,记录日志,然后反序列化更好的方法 【参考方案1】:

一种选择是使用onStatus 函数。好处是你可以对不同的状态码做出不同的反应:

.onStatus(HttpStatus::is4xxClientError, res -> 
  res.toEntity(String.class).subscribe(
    entity -> log.warn("Client error ", entity)
   );
   return Mono.error(new HttpClientErrorException(res.statusCode()));
 )

但请注意,这将异步记录,这意味着它可能会在您已经记录不同的内容之后记录。我现在正在使用这种方式,但我知道它并不完美,所以我很乐意看到更好的建议。

【讨论】:

以上是关于如何记录 Spring WebClient 响应的主要内容,如果未能解决你的问题,请参考以下文章