微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spring Webflux 将 null 返回给控制器

如何解决Spring Webflux 将 null 返回给控制器

每次我认为我了解 Webflux 和项目反应器时,我发现我不知道。 所以我进行了一些 API 调用……我想先调用 1 ……取回信息,使用该信息进行后续调用

所以我这样做

public Mono<ResponSEObject> createAggregatedRecords(RecordToPersist recordToPersist){
return randomapiclient.createRecord(recordToPersist)
    .flatMap(result -> {
        return Mono.zip(
                webClientInstance.createOtherRecord1(result.getChildRecord1()),webClientInstance2.createOtherRecord2(result.getChildRecord2()),webClientInstance3.createOtherRecord3(result.getChildRecord3()))
                .map(tupple -> {
                        ResponSEObject respObj = new ResponSEObject();
                        respObj.setChildResult1(tupple.getT1());
                        respObj.setChildResult2(tupple.getT2());
                        respObj.setChildResult3(tupple.getT3());
                        return respObj;
                }
    }).doOnSuccess(res -> log.info("This throws an error: {}",res.getChildResult1.getFirstField()))
}

现在,出于某种原因,我将带有此代码的空对象返回给我的控制器,并且我没有在 Json 中打印出该对象。

我怀疑这是因为我将 Mono.zip 嵌套在平面图中,并且没有正确返回结果。我正在执行所有这些 API 调用,因为我的端到端集成测试取得了成功。

现在我想我会从 Mono.zip 链中的 .map 函数返回该响应对象,然后将其返回到链中的 flatMap 调用。如果我像 doOnSuccess 一样将观察者放在链上并打印出响应对象字段,我会得到一个空指针......不知道我错过了什么

  1. 这是实现该目标的好模式吗?或者我应该尝试不同的路径?
  2. 为什么我不能让响应对象返回?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。