【问题标题】:Spring Reactive : convert Flux<Wrapper<X>> to Flux<X>Spring Reactive:将 Flux<Wrapper<X>> 转换为 Flux<X>
【发布时间】:2018-12-13 01:48:04
【问题描述】:

我有端点:/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&lt;Stream&gt;(或List&lt;Stream&gt;?)的服务,所以我创建了这种方法

@Override
public Flux<Stream> getAllNodes() {
    var endpoint = "/upstream";

    var response = webClient.get().uri(endpoint).retrieve()
            .bodyToMono(new ParameterizedTypeReference<ResponseWrapper<Upstream>>() {
            });

    return ???;
}

如何转换ResponseWrapper&lt;Upstream&gt; 使其返回Flux&lt;Stream&gt;List&lt;Stream&gt;

我猜是.flatMap()map(),但正确的用法是什么?

非常感谢

【问题讨论】:

    标签: java reactive-programming spring-webflux reactor


    【解决方案1】:

    我相信你的var responseMono&lt;ResponseWrapper&lt;Upstream&gt;&gt;,所以是这样的:

    return response.flatMapMany(pesponseWrapper -> Flux.fromIterable(pesponseWrapper.getData()));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-02
      • 2023-03-19
      • 2021-02-06
      • 2022-01-15
      • 1970-01-01
      • 2019-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多