如果我的 WebClient 請求收到 HTTP 4xx 或 5xx 錯誤,我需要進行另一個 HTTP 調(diào)用。目前我有以下內(nèi)容:webClient.post()
.uri(myUri)
.headers(myHeaders)
.body(myBody)
.retrieve()
.onStatus(HttpStatus::isError, responseStrategy::errorResponseCallback)
...我的錯誤響應(yīng)回調(diào)如下所示: public Mono<? extends Throwable> errorResponseCallback(ClientResponse clientResponse) {
... make ugly new HTTP request here
return Mono.error(...);
}我不喜歡在回調(diào)中嵌入錯誤處理的想法,它只應(yīng)該返回一個包含異常的 Mono。這種情況的正確方法是什么?
1 回答

皈依舞
TA貢獻1851條經(jīng)驗 獲得超3個贊
如果你想模擬一些fallback
基于 - 的邏輯,你可以使用onErrorResume
方法并將回退函數(shù)結(jié)果傳遞給下游。WebClient 會將不成功的結(jié)果視為錯誤,因此onErrorResume
被稱為。
webClient.post() .uri(myUri) .headers(myHeaders) .body(myBody) .retrieve() .bodyToMono(String.class) .onErrorResume(error -> ... your fallback logic ...)
如果您只想執(zhí)行一些副作用,并且希望保持錯誤通過反應(yīng)流,您可以使用:
webClient.post() .uri(myUri) .headers(myHeaders) .body(myBody) .retrieve() .bodyToMono(String.class) .doOnError(error -> ... your fallback logic ...)
添加回答
舉報
0/150
提交
取消