【问题标题】:Spring WebClient async callback not called when http server response 404http服务器响应404时未调用Spring WebClient异步回调
【发布时间】:2018-11-25 16:06:50
【问题描述】:

我遇到的一个问题如题,代码如下:

Mono<Account> accountMono = client.get()
    .uri("accounturl")
    .accept(MediaType.APPLICATION_JSON)
    .exchange()
    .flatMap(response -> {
                            if (response.statusCode().equals(HttpStatus.OK)) {
                              return response.bodyToMono(Account.class);
                            } else { 
                              return Mono.empty();
                            }
                          });

accountMono.subscribe(result -> callback(result));  

```

Server response 404。我尝试创建一个空帐户,但未调用 callback()。看起来空的Mono 没有发出。

【问题讨论】:

    标签: spring webclient


    【解决方案1】:

    服务器响应 404,我尝试创建一个空帐户

    您没有创建一个空的Account。你返回的是一个空的Mono,即一个永远不会发出任何东西的Mono

    如果您想返回一个发出空帐户的 Mono,那么您需要

    return Mono.just(new Account());
    

    【讨论】:

    • 另一个问题我可以问你的建议。我想将 404 暴露给上层应用程序以知道找不到帐户,而不是返回 Account 对象。我可以使用 ClientResponse 作为回调的回复并在那里检查吗?谢谢。
    • 我没有必要的反应式应用经验来建议最佳解决方案
    猜你喜欢
    • 1970-01-01
    • 2020-07-25
    • 1970-01-01
    • 2019-09-25
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    相关资源
    最近更新 更多