【问题标题】:Convert Flux<T> in Mono<Response<T>> in Spring Webflux在 Spring Webflux 中转换 Mono<Response<T>> 中的 Flux<T>
【发布时间】:2020-06-19 07:49:03
【问题描述】:

我们正在使用 Spring Data 响应式,当我们调用 findAll 时,我们会收到一个 Flux&lt;T&gt;,我们希望在 API 中公开这个响应,但是我们的 API 结构是

{
    "status": 200,
    "items": [ ... ]
}

所以,我们想将其公开为Mono&lt;&lt;Response&lt;T&gt;&gt;

public class Response<T> {
    private int status;
    private List<T> items;
    // ...
}

如何在Spring Webflux中将Flux&lt;T&gt;转换成Mono&lt;Response&lt;T&gt;&gt;

【问题讨论】:

  • 不清楚是Mono&lt;&lt;Response&lt;T&gt;&gt;还是Mono&lt;List&lt;T&gt;&gt;。要获得第二个,您可以调用Flux#collectList
  • @AniketSahrawat 谢谢,我已经编辑了问题,是的,我想转换为Mono&lt;&lt;Response&lt;T&gt;&gt;
  • @user13674325 您仍然想使用collectList() 来获取Mono&lt;List&lt;T&gt;&gt; - 然后您可以将该结果映射到您的响应中。

标签: spring spring-webflux


【解决方案1】:
Flux<User> users = //...
Mono<Response<User>> response = users.collectList().map(items -> new Response(items));

【讨论】:

    猜你喜欢
    • 2019-03-26
    • 2021-03-09
    • 2022-12-23
    • 1970-01-01
    • 2018-12-12
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    • 2019-04-13
    相关资源
    最近更新 更多