当前位置: 首页 > 知识库问答 >
问题:

Webclient 200 状态代码,响应正文失败

岑叶秋
2023-03-14

我正在使用 webClient 调用调用服务 1,该服务 1 调用服务 2,然后服务 2 从数据库中获取数据并返回它们。问题:我有 onStatus 来捕获错误的响应,因此响应具有 400 或 500 个状态代码。代码示例:

     return webClient.post()
                     .uri('/example')
                     .header('someHeader')
                     .body(PojoBody)
                     .retrieve()
                     .onStatus(HttpStatus:isError, handleError)
                     .bodyToMono(ResponsePojo);

在一些边缘情况下,响应带有200个状态代码,响应体有失败消息和失败原因。那么我如何检索它,然后用该失败消息抛出异常(在其他服务返回的响应对象中)。因为它试图映射并抛出错误。目前我得到500个内部服务器错误。任何帮助都将不胜感激。

共有1个答案

李昌勋
2023-03-14

< code>onStatus方法允许您处理特定的HTTP状态响应。你也可以用它来获得成功的回答:

  .onStatus(HttpStatus::is2xxSuccessful, this::handleSuccess)
  .onStatus(HttpStatus::isError, this::handleError)  
 类似资料:
  • 问题内容: 我有一个API调用,我需要对其进行一些检查并可能返回各种状态代码。我不需要自定义视图或任何东西,我只需要返回正确的代码。如果用户未通过适当的凭据,则需要返回401状态。如果他们尚未发送受支持的请求格式,则需要返回400状态。 因为它是一个API,所以我真正想做的就是设置响应状态并以一条简单的愚蠢消息退出,该消息说明请求失败的原因(可能使用)。刚好足以完成工作,但我还无法使其正常工作。我

  • 我试图创建一个regex来捕获HTTP状态代码和curl请求的主体。下面的regex模式可以在多个在线站点上工作,但在我的Mac命令行上的shell if-语句中不匹配。是我的regex关闭了还是有其他事情发生? 我也对其他方法持开放态度(我的目标是运行Centos5的机器)。

  • 我希望返回http状态代码和响应对象。如果我只是在失败场景中返回response object,则状态返回为200。但是我希望将服务返回的状态(例如:403)与响应对象一起发送。但是下面的代码只是返回消息和状态。在这种情况下,我想要响应对象orderdetails对象,它有失败原因和其他字段。如何将对象传递回客户端有什么帮助吗?

  • 我使用curl获取http头以查找http状态代码并返回响应。我使用以下命令获取http头

  • 我想知道在REST API中应该如何响应。 有效示例: 以上是一个有效的请求,当前我的HTTP状态为200,有一个JSON响应

  • 的方法,例如抛出。我想从catch块中的那个异常对象中提取HTTP状态代码和响应正文。我该怎么做?