gpt4 book ai didi

java - 如果请求未使用 webClient 返回错误,我如何返回 Empty mono

转载 作者:行者123 更新时间:2023-12-05 03:35:12 27 4
gpt4 key购买 nike

我想知道当我使用 webClient 时如何返回一个empty Mono,我有这段代码并且它在请求返回用户时有效。

public User getUserByUsername(String username) {
Mono<User> user = webClient.get().uri(uriBuilder -> uriBuilder
.path("localhost:8090/user" + "/getByUsername").queryParam("username", username).build())
.retrieve()
.bodyToMono(User.class);

User userRet = user.block();
return userRet;

}

最佳答案

首先,如果您真的想充分利用响应式(Reactive)堆栈,请不要使用 block()。有了它,您将阻塞线程以等待响应,不要那样做。您必须始终在代码中处理 MonoFlux。大致如下:

public Mono<User> getUserByUsername(String username) {
return webClient.get().uri(uriBuilder -> uriBuilder
.path("localhost:8090/user" + "/getByUsername").queryParam("username", username).build())
.retrieve()
.bodyToMono(User.class);
}

然后,如果响应是 4XX 或 5XX,您可以指定要执行的操作。下面是 5XX 的示例:

public Mono<User> getUserByUsername(String username) {
return webClient.get().uri(uriBuilder -> uriBuilder
.path("localhost:8090/user" + "/getByUsername").queryParam("username", username).build())
.retrieve()
.onStatus(HttpStatus::is5xxServerError, response -> Mono.empty())
.bodyToMono(User.class);
}

关于java - 如果请求未使用 webClient 返回错误,我如何返回 Empty mono,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69930728/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com