我正在使用 webflux Mono(在 Spring Boot 5 中)来使用外部 API。当 API 响应状态码为 200 时,我能够很好地获取数据,但是当 API 返回错误时,我无法从 API 中检索错误消息。 Spring webclient 错误处理程序始终将消息显示为
ClientResponse has erroneous status code: 500 Internal Server Error
,但是当我使用 PostMan 时,API 返回此 JSON 响应,状态码为 500。
{
"error": {
"statusCode": 500,
"name": "Error",
"message":"Failed to add object with ID:900 as the object exists",
"stack":"some long message"
}
}
我使用 WebClient 的请求如下
webClient.getWebClient()
.post()
.uri("/api/Card")
.body(BodyInserters.fromObject(cardObject))
.retrieve()
.bodyToMono(String.class)
.doOnSuccess( args -> {
System.out.println(args.toString());
})
.doOnError( e ->{
e.printStackTrace();
System.out.println("Some Error Happend :"+e);
});
我的问题是,当 API 返回状态码为 500 的错误时,如何访问 JSON 响应?
原文由 Mohale 发布,翻译遵循 CC BY-SA 4.0 许可协议
看看
.onErrorMap()
,这给了你一个例外。由于您可能还需要exchange() 的body() 来查看,所以不要使用retrieve,而是