如果我的 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 ...)
添加回答
举报
0/150
提交
取消