Map Only<Resources<Resource<T>>> Only<List<T>>?
Map Mono<Resources<Resource<T>>> to Mono<List<T>>?
在我的 Java 9 Spring Boot 2 with Spring HATEOAS 应用程序中,我有一个 REST API 返回 Mono<Resources<Resource<T>>>
。在应用层,我希望数据是Mono<List<T>>
,但是我怎样才能简洁地将Mono<Resources<Resource<T>>>
映射到Mono<List<T>>
?
我期待的是:
public Mono<List<Order>> orders() {
return rest.orders()
.flatmap(List::stream)
.map(r -> r.getContent())
.collect(Collectors.toList());
}
但是编译失败,因为 List
没有定义 List.stream(Resources<Resource<Order>>
。 rest.orders()
returnsMono<Resources<Resource<Order>>>
。有什么想法吗?
一个(内存晃动)解决方案:
public Mono<List<Order>> orders() {
return rest.orders()
.map(r -> toList(r));
}
private List<Order> toList(Resources<Resource<Order>> resources) {
List<Order> orders = new ArrayList<>();
resources.forEach(r -> orders.add(r.getContent());
return orders;
}
在我的 Java 9 Spring Boot 2 with Spring HATEOAS 应用程序中,我有一个 REST API 返回 Mono<Resources<Resource<T>>>
。在应用层,我希望数据是Mono<List<T>>
,但是我怎样才能简洁地将Mono<Resources<Resource<T>>>
映射到Mono<List<T>>
?
我期待的是:
public Mono<List<Order>> orders() {
return rest.orders()
.flatmap(List::stream)
.map(r -> r.getContent())
.collect(Collectors.toList());
}
但是编译失败,因为 List
没有定义 List.stream(Resources<Resource<Order>>
。 rest.orders()
returnsMono<Resources<Resource<Order>>>
。有什么想法吗?
一个(内存晃动)解决方案:
public Mono<List<Order>> orders() {
return rest.orders()
.map(r -> toList(r));
}
private List<Order> toList(Resources<Resource<Order>> resources) {
List<Order> orders = new ArrayList<>();
resources.forEach(r -> orders.add(r.getContent());
return orders;
}