【发布时间】:2019-12-30 08:00:26
【问题描述】:
在我的 webflux 应用程序中,我想通过 WebClient 发送一些请求。我想处理所有条件(200、401、403 和 ... 响应),然后响应json 到客户端。对于错误状态代码,我想使用@RestControllerAdvice,所以我必须抛出一个自定义异常,然后在控制器建议中处理自定义 json。查看示例代码:
WebClient.create().post
.uri("URI")
.retrieve()
.onStatus(HttpStatus::is4xxClientError, {
// create Mono<CustomException>
}
.bodyToMono(ResponseDto.class)
现在异常处理程序如下:
@ResponseBody
@ResponseStatus(...)
@ExceptionHandler(CustomException1.class)
public void customException1(CustomException1 exception) {
//do Something width response body
}
@ExceptionHandler(CustomException2.class)
public void customException2(CustomException2 exception) {
//do Something width response body
}
Webclient 得到一个 401 响应,json 正文如下:
{
"message": "Password is incorrect"
}
我可以创建Mono.error(new CustomException()),但问题是 WebClient 响应体。如果消息是“密码不正确”,我想发送客户端:
用户名或密码不正确
我该怎么做?
【问题讨论】:
-
你能澄清一下这里的实际和预期结果是什么吗?是否要更改异常处理程序或 Web 客户端代码?
-
@MartinTarjányi 用户发送 ajax 请求,而 Whit 请求参数我向服务器发送请求。我想在失败模式下响应用户不同的答案。所以我想用异常处理程序来做。
-
有多种方法可以解决这个问题,而您提供的信息太少。您要解决的实际问题是什么,如果您是 webflux 的新手,为什么要
So I want do it with Exception Handler。 Webflux 不像 spring boot,你使用 webflux 解决不同的事情。如果你在抛出异常时解释你想要做的更详细的事情。想要登录吗?向客户端返回http状态?提出新要求?
标签: spring spring-boot reactive-programming spring-webflux