gpt4 book ai didi

spring - 使用 Spring Webflux 返回元素列表

转载 作者:行者123 更新时间:2023-12-04 21:33:42 24 4
gpt4 key购买 nike

我正在尝试使用 Spring Webflux 创建一个简单的 CRUD 示例,但是我陷入了一些概念中。

我知道我可以在我的 Controller 请求映射方法中返回一个 Flux 。但有时我想返回 404 状态,这样我就可以以某种方式在前端处理。

我在 official documentation 中找到了一个例子使用 ServerResponse 对象:

        public Mono<ServerResponse> listPeople(ServerRequest request) { 
Flux<Person> people = repository.allPeople();
return ServerResponse.ok().contentType(APPLICATION_JSON).body(people, Person.class);
}

如您所见,即使返回的是一个列表 (Flux) o 人员,ServerResponse.ok.body 也会创建一个 Mono。

所以我的问题是:是这样吗?换句话说,我是否有 Flux 并不重要,Spring 是否总是返回 单声道 ServerResponse(或其他类似的类)?

对于我的 404 状态,我可以使用类似的东西
.switchIfEmpty(ServerResponse.notFound().build());

但我正在考虑更多的流媒体方式。例如,我可以逐个元素地处理对象列表。

最佳答案

我想你需要这个功能 collectList()flatMap() .
像这样:

public Mono<ServerResponse> listPeople(ServerRequest request) { 
Flux<Person> people = repository.allPeople();
return people.collectList().flatMap(p->
p.size() < 1 ?
ServerResponse.status(404).build()
:ServerResponse.ok().contentType(APPLICATION_JSON).body(fromObject(p))
);
}

关于spring - 使用 Spring Webflux 返回元素列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44265393/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com