我想知道當我使用 webClient 時如何回傳一個空的 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;
}
uj5u.com熱心網友回復:
首先,block()如果您真的想充分利用使用反應式堆疊的優勢,請不要使用。有了它,你就會阻塞執行緒等待回應,不要那樣做。您必須始終在代碼中處理Mono和Flux。大致如下:
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);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/360463.html
