有什么办法可以实现春季webflux的分页和弹簧数据的反应

我试图了解Spring 5的反应部分。我已经创建了简单的rest端点,用于查找所有使用spring web-flux和spring data reactive(mongo)的实体,但是没有看到如何实现分页。

这是我在Kotlin的简单例子:

 @GetMapping("/posts/") fun getAllPosts() = postRepository.findAll() 

这是否意味着反应终点不需要分页? 有什么办法从服务器端使用这个堆栈实现分页?

Spring Data中的被动支持不提供Page返回types的方法。 尽管如此, Pageable参数在方法签名中也是受支持的,这些方法签名将limitoffset传递给驱动程序,因此存储本身也会返回一个Flux ,它发出请求的范围。

 Flux findByFirstname(String firstname, Pageable pageable); 

有关更多信息,请参阅2.0.RC2的当前参考文档和Spring数据示例 。

Flux提供了skip和获取分页支持的方法,您也可以使用filtersort来筛选和排序结果。

以下代码适用于我。

 @GetMapping("") public Flux all(@RequestParam(value = "q", required = false) String q, @RequestParam(value = "page", defaultValue = "0") long page, @RequestParam(value = "size", defaultValue = "10") long size) { return this.postRepository.findAll() .filter(p -> Optional.ofNullable(q).map(key -> p.getTitle().contains(key) || p.getContent().contains(key)).orElse(true)) .sort(comparing(Post::getCreatedDate).reversed()) .skip(page * size).take(size); }