![](/img/trans.png)
[英]Spring WebFlux WebClient - How to resolve 400 Bad Request
[英]Spring WebClient - Purposefully returning bad request
所以我有一個網絡客戶端:
public Mono<UserObject> getData(String id){
return webClient.get()
.uri(/user/getData)
.header("header", header)
.bodyValue(id)
.retrieve()
.bodyToMono(UserObject.class);
}
如果/user/getData
返回錯誤請求,我希望 WebClient 也返回錯誤請求。 相反,WebClient 拋出一個內部服務器錯誤,說我有一個錯誤的請求。
執行 WebClient 時需要 output:
"status": 400,
"message" : "Bad Request"
實際 output:
"status": 500,
"message" : "org.springframework.web.reactive.function.client.WebClientResponseException$BadRequest: 400 Bad Request from GET .../user/getData"
也許您可以創建一個由異常觸發的錯誤處理程序,然后將 http 錯誤附加到響應中。 這個答案顯示了如何做到這一點。
您需要處理錯誤並返回相應的狀態
public Mono<UserObject> getData(String id){
return webClient.post()
.uri("/user/getData")
.bodyValue(id)
.retrieve()
.bodyToMono(UserObject.class)
.onErrorResume(e -> {
if (e instanceof WebClientResponseException) {
var responseException = (WebClientResponseException) e;
if (responseException.getStatusCode().is4xxClientError()) {
return Mono.error(new ResponseStatusException(responseException.getStatusCode()));
}
}
return Mono.error(e);
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.