spring-webflux - 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 一样将观察者放在链上并打印出响应对象字段,我会得到一个空指针......不知道我错过了什么
- 这是实现该目标的好模式吗?还是我应该尝试不同的路径?
- 为什么我不能让响应对象返回?
解决方案
推荐阅读
- c++ - OPENGL 光照结果错误
- informatica - 我们如何找出其中使用 oracle 包的所有映射?
- fluentd - 无法在 Fluentd 上运行简单的 Python 脚本
- ios - Gluon - 如何创建 webview 以与本机(iOS)进行通信
- momentjs - moment.js 获取最后一个星期六
- typescript - 传递泛型类型的实例»按原样«
- react-native - React Native 复选框元素不起作用
- c# - .Net core 3.1 并行运行方法
- php - 更新到版本 6 后的 Laravel 关系问题
- javascript - 如何将所有表单值传递给formik中的验证功能