我有端点:/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()map(),但是正确的用法是什么?

非常感谢

最佳答案

我相信您的var responseMono<ResponseWrapper<Upstream>>,因此如下所示:

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

08-06 01:39