首页 > 解决方案 > 如何在 webclient 中返回 Flux.just 状态

问题描述

我有个问题

如何返回空通量 onStatus 5xx 是否可能?

@Override
public Flux<Repository> getAllUserRepositories(User user) {
    return WebClient.create()
            .get()
            .uri(hostname + ":" + port + "/user" + "/repos" + "?access_token=" + ACCESS_TOKEN + "&type=private")
            .retrieve()
            .onStatus(HttpStatus::is5xxServerError, clientResponse -> Mono.error(new WebServerException("Problem with service", null)))
            .bodyToFlux(Repository.class)
            .filter(repository -> repository.getName().contains(user.getName()));
}

标签: javaspring-webflux

解决方案


您可以使用onErrorResume如下:

return WebClient.create()
    .get()
    .uri(hostname + ":" + port + "/user" + "/repos" + "?access_token=" + ACCESS_TOKEN + "&type=private")
    .retrieve()
    .onStatus(HttpStatus::is5xxServerError, clientResponse -> Mono.error(new WebServerException("Problem with service", null)))
    .bodyToFlux(Repository.class)
    .onErrorResume(WebServerException.class, (e) -> Flux.empty())
    .filter(repository -> repository.getName().contains(user.getName()));

推荐阅读