如何处理Web客户端检索中的404

Roh*_*ngh 13 spring-boot spring-webflux spring-webclient

我是 Spring WebClient 的新手,我编写了一个通用方法,可用于在我的应用程序中使用 REST API:

public <T> List<T> get(URI url, Class<T> responseType) {
        return  WebClient.builder().build().get().uri(url)
                   .header("Authorization", "Basic " + principal)
                   .retrieve().bodyToFlux(responseType).collectList().block();
}
Run Code Online (Sandbox Code Playgroud)

如果消耗了rest-api返回404,我想返回并清空列表。

有人可以建议如何实现这一目标吗?

Dea*_*ool 9

默认情况下,检索方法会针对任何 4xx 和 5xx 错误抛出 WebClientResponseException 异常

默认情况下,4xx 和 5xx 响应会导致 WebClientResponseException。

您可以使用onErrorResume

 webClient.get()
 .uri(url)
 .retrieve()
 .header("Authorization", "Basic " + principal)
 .bodyToFlux(Account.class)
 .onErrorResume(WebClientResponseException.class,
      ex -> ex.getRawStatusCode() == 404 ? Flux.empty() : Mono.error(ex))
 .collectList().block();
Run Code Online (Sandbox Code Playgroud)