spring 5 webflux 中返回 mono 的正确方法
在 spring 5 webflux 中,处理 http 请求并返回 mono 值非常常见。然而,有时可能需要返回请求从 mono 流中获取的数据。在这种情况下,可以将 mono 流转换成 flux 流,然后使用 subscribeon() 方法将操作提交到另一个调度器线程。
以下是如何实现此操作:
/** * 模拟服务端 * @param token * @param bodyMap * @return */ public Mono<JSONArray> doPostAndSaveList(String token, Map<String, Object> bodyMap) { log.info("进入doPost方法"); return WebClient.create(baseUrl) .post() .uri(uriBuilder -> uriBuilder.path(uri) .queryParam("access_token", token) .build()) .bodyValue(bodyMap) .retrieve() .bodyToMono(JSONObject.class) .subscribeOn(Schedulers.elastic()) .flatMap(jsonObject -> { String groupsStr = jsonObject.getString("group_chat_list"); log.info("groupsStr:{}", groupsStr); List<GroupListResponse> groupListResponses = null; JSONArray jsonObjectJSONArray = jsonObject.getJSONArray("group_chat_list"); if (jsonObjectJSONArray != null) { // 此处可对 JSONArray 进行进一步处理 return Mono.just(jsonObjectJSONArray); } else { return Mono.empty(); } }); }
登录后复制
在这个示例中:
- 创建 webclient 并配置请求的 uri 和参数。
- 设置请求正文。
- 调用 retrieve() 方法检索响应。
- 将响应转换为 mono
,指定在 elastic 调度器线程上执行此操作。 - 在 flatmap() 方法中提取目标数据并将其包装到 mono
中。
通过使用 mono.just(),可以将 jsonarray 转换成 mono 流。完成此操作后,无需再调用 subscribe() 方法,因为 mono 流中的数据将在返回 mono 时准备好使用。
以上就是Spring 5 WebFlux 中如何正确处理 Mono 返回值并获取数据?的详细内容,更多请关注抖狐科技其它相关文章!
-
作业帮怎么找相似题目答案
使用作业帮查找相似题目答案的步骤如下:打开作业帮应用并进入搜题页面拍摄或输入题目内容选择科目和年级搜索相似题目查看答案解析查看更多解析(如有)在作业帮上查找相似题目答案的方法 作业帮是一款学习辅导应用...
-
play商店老是闪退怎么回事
导致 play 商店闪退的原因包括:存储空间不足、缓存损坏、网络连接不良、过时的 play 商店版本和系统问题。解决方案包括清除缓存、移动文件、卸载应用、检查网络连接、更新 play 商店、重启设备和...
-
抖音粉丝群发送失败怎么回事?能解决吗?
在抖音运营过程中,许多创作者会利用粉丝群功能与粉丝互动。有时会遇到发送消息失败的情况,这让人颇为头疼。那么,抖音粉丝群发送失败究竟是怎么回事呢? 一、抖音粉丝群发送失败怎么回事? 1. 网络问题 (1...
-
作业帮怎么朗读课文
作业帮朗读课文的方法:在作业帮app中选择课本和课文。点击“朗读”按钮。选择“真人朗读”或“ai朗读”模式。点击“开始朗读”即可。作业帮如何朗读课文? 方法:打开作业帮APP:在手机或平板电脑上下载并...
-
怎么关闭苹果id绑定的微信自动续费
要关闭苹果 id 绑定的微信自动续费功能,请依次执行以下步骤:打开 app store 并点击个人资料图标。选择“订阅”并找到微信订阅。点击“取消订阅”。如何关闭苹果 ID 绑定的微信自动续费 如果您...