这可以分为两个独立的部分。
如何将WebClient收到的HTTP 404响应转换为自定义异常
使用时
WebClient,您可以从远程服务接收HTTP
404响应。默认情况下,所有响应
4xx和
5xx客户端响应都将变为
WebClientResponseException。因此,您可以在WebFlux应用程序中直接处理这些异常。
如果您只想将404响应转换为自定义异常,则可以执行以下操作:
WebClient webClient = //...webClient.get().uri("/persons/1") .retrieve() .onStatus(httpStatus -> HttpStatus.NOT_FOUND.equals(httpStatus), clientResponse -> Mono.error(new MyCustomException())) .bodyToMono(...);显然,这是基于每个客户调用完成的。
您可以
ExchangeFilterFunction通过
WebClient实例在实例上设置一次来实现更可重用的方式:
WebClient.builder().filter(myExchangeFilterFunction)...
如何在WebFlux应用程序中处理自定义异常
使用带有注释的Spring WebFlux,您可以使用带有注释的方法处理异常
@ExceptionHandler(请参阅Spring
framework参考文档)。
注意:可以使用a
WebExceptionHandler,但是它的级别很低,因为那里没有高级支持:您需要使用缓冲区手动编写响应,而无需任何序列化支持。



