SpringBoot - 网络请求客户端WebClient使用详解(异常处理)
请求异常处理
1,默认异常
(1)当我们使用 WebClient 发送请求时, 如果接口返回的不是 200 状态(而是 4xx、5xx 这样的异常状态),则会抛出 WebClientResponseException 异常。
@RestController
public class HelloController {
// 创建 WebClient 对象
private WebClient webClient = WebClient.builder()
.baseUrl("http://localhost:8080")
.build();
@GetMapping("/test")
public void test() {
Mono<String> mono = webClient
.get() // GET 请求
.uri("/xxxxx") // 请求一个不存在的路径
.retrieve() // 获取响应体
.bodyToMono(String.class);
System.out.println(mono.block());
}
}
(2)使用浏览器访问结果如下:
(3)使用 Postman 访问结果如下:
2,异常处理(适配所有异常)
(1)我们可以通过 doOnError 方法适配所有异常,比如下面代码在发生异常时将其转为一个自定义的异常抛出(这里假设使用 RuntimeException):
@RestController
public class HelloController {
// 创建 WebClient 对象
private WebClient webClient = WebClient.builder()
.baseUrl("http://localhost:8080")
.build();
@GetMapping("/test")
public void test() {
Mono<String> mono = webClient
.get() // GET 请求
.uri("/xxxxx") // 请求一个不存在的路径
.retrieve() // 获取响应体
.bodyToMono(String.class);
System.out.println(mono.block());
}
}
(2)使用浏览器访问结果如下: