在Spring Boot中使用Web Client Mono获取API响应错误消息

前端之家收集整理的这篇文章主要介绍了在Spring Boot中使用Web Client Mono获取API响应错误消息前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我使用webflux Mono(在Spring boot 5中)使用外部API.当API响应状态代码为200时,我能够很好地获取数据,但是当API返回错误时,我无法从API检索错误消息. Spring webclient错误处理程序始终将消息显示

ClientResponse有错误的状态代码:500内部服务器错误,但是当我使用PostMan时,API会返回状态代码为500的JSON响应.

  1. {
  2. "error": {
  3. "statusCode": 500,"name": "Error","message":"Failed to add object with ID:900 as the object exists","stack":"some long message"
  4. }
  5. }

我使用WebClient的请求如下

  1. webClient.getWebClient()
  2. .post()
  3. .uri("/api/Card")
  4. .body(BodyInserters.fromObject(cardObject))
  5. .retrieve()
  6. .bodyToMono(String.class)
  7. .doOnSuccess( args -> {
  8. System.out.println(args.toString());
  9. })
  10. .doOnError( e ->{
  11. e.printStackTrace();
  12. System.out.println("Some Error Happend :"+e);
  13. });

我的问题是,当API返回状态代码为500的错误时,如何才能访问JSON响应?

最佳答案
查看.onErrorMap(),它为您提供了查看的异常.因为您可能还需要查看exchange()的body(),所以不要使用retrieve,而是

  1. .exchange().flatMap((ClientResponse) response -> ....);

猜你在找的Spring相关文章