为了账号安全,请及时绑定邮箱和手机立即绑定

Spring WebClient - HTTP 错误状态的自定义响应回调

Spring WebClient - HTTP 错误状态的自定义响应回调

牛魔王的故事 2022-11-10 16:37:33
如果我的 WebClient 请求收到 HTTP 4xx 或 5xx 错误,我需要进行另一个 HTTP 调用。目前我有以下内容:webClient.post()          .uri(myUri)          .headers(myHeaders)          .body(myBody)          .retrieve()          .onStatus(HttpStatus::isError, responseStrategy::errorResponseCallback)          ...我的错误响应回调如下所示:    public Mono<? extends Throwable> errorResponseCallback(ClientResponse clientResponse) {         ... make ugly new HTTP request here          return Mono.error(...);     }我不喜欢在回调中嵌入错误处理的想法,它只应该返回一个包含异常的 Mono。这种情况的正确方法是什么?
查看完整描述

1 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

如果你想模拟一些fallback基于 - 的逻辑,你可以使用onErrorResume方法并将回退函数结果传递给下游。WebClient 会将不成功的结果视为错误,因此onErrorResume被称为。

webClient.post()
         .uri(myUri)
         .headers(myHeaders)
         .body(myBody)
         .retrieve()
         .bodyToMono(String.class)
         .onErrorResume(error -> ... your fallback logic ...)

如果您只想执行一些副作用,并且希望保持错误通过反应流,您可以使用:

webClient.post()
         .uri(myUri)
         .headers(myHeaders)
         .body(myBody)
         .retrieve()
         .bodyToMono(String.class)
         .doOnError(error -> ... your fallback logic ...)


查看完整回答
反对 回复 2022-11-10
  • 1 回答
  • 0 关注
  • 170 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信