我正在使用 spring webflux 的 webclient,如下所示:
WebClient.create()
.post()
.uri(url)
.syncBody(body)
.accept(MediaType.APPLICATION_JSON)
.headers(headers)
.exchange()
.flatMap(clientResponse -> clientResponse.bodyToMono(tClass));
它运作良好。我现在想处理来自我正在调用的网络服务的错误(Ex 500 内部错误)。通常我会在“流”上添加一个 doOnError 并使用 Throwable 来测试状态代码,
但我的问题是我想获得 web 服务提供的正文,因为它向我提供了一条我想使用的消息。
我希望无论发生什么都做 flatMap 并测试自己的状态代码以反序列化或不反序列化正文。
原文由 adrien le roy 发布,翻译遵循 CC BY-SA 4.0 许可协议
请注意,在撰写本文时,5xx 错误不再导致底层 Netty 层出现异常。请参阅 https://github.com/spring-projects/spring-framework/commit/b0ab84657b712aac59951420f4e9d696c3d84ba2