![](/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.