java - Spring Reactive:转换通量> 到通量
问题描述
我有端点:/upstreams
它将以以下格式返回 Json:
{
"next" : "String",
"data" : [
{
"id" : "String",
"name" : "String"
}
]
}
我有几个这样的端点,所以我创建了一个包装类
@Data
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class ResponseWrapper<T> {
private List<T> data;
private String next;
}
对于/upstream
上面的响应,数据类型是Upstream
@Data
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class Upstream extends Node {
private String id;
private String name;
}
现在我有一个必须返回Flux<Stream>
(或List<Stream>
?)的服务,所以我创建了这种方法
@Override
public Flux<Stream> getAllNodes() {
var endpoint = "/upstream";
var response = webClient.get().uri(endpoint).retrieve()
.bodyToMono(new ParameterizedTypeReference<ResponseWrapper<Upstream>>() {
});
return ???;
}
我怎样才能转换ResponseWrapper<Upstream>
它返回Flux<Stream>
或List<Stream>
?
我猜是.flatMap()
or map()
,但正确的用法是什么?
非常感谢
解决方案
我相信你var response
是一个Mono<ResponseWrapper<Upstream>>
,所以是这样的:
return response.flatMapMany(pesponseWrapper -> Flux.fromIterable(pesponseWrapper.getData()));
推荐阅读
- python-3.x - 过采样是在使用 imblearn 管道进行交叉验证之前还是之后发生的?
- javascript - 如何实现类似于 Array.prototype.find 的递归函数
- java - 接口、类和子类继承
- tsql - 您将如何创建基于一列但按另一列排序的组标识符?
- php - 我在 Xampp 上运行两个版本的 PHP 时遇到问题
- c - 尝试 malloc 时具有特定输出的 Valgrind 泄漏和分段错误
- sql - 将周末计数滚动到星期一计数
- python - 如果 URL 中传递了超过 1 个参数,Django 无法在 POST 请求正文中加载 Json
- java - 使用带有 java 的 testng 从程序中的另一个类调用方法时出现问题
- android - 使用 ContentProvider 将文件附加到电子邮件不起作用