【发布时间】:2022-01-06 10:31:10
【问题描述】:
我有一个返回 Flux 的 Jdbc 层。在返回数据时,fromPublisher 方法接受其他 Serializable 类,但该方法不接受 Flux。
方法 1
public Mono<ServerResponse> getNames(final ServerRequest request) {
Flux<String> strings = Flux.just("a", "b", "c");
return ServerResponse.ok().contentType(APPLICATION_JSON)
.body(fromPublisher(response), String.class);
}
上述方法是将 abc 组合为单个字符串。
我试过了,
return ServerResponse.ok()
.contentType(APPLICATION_JSON)
.body(BodyInserters.fromValue(response), List.class);
我也试过了。
Mono<List<String>> mono = response.collectList();
ServerResponse.ok()
.contentType(APPLICATION_JSON)
.body(fromPublisher(mono, String.class));
但这也给出了运行时错误
> body' should be an object, for reactive types use a variant specifying
> a publisher/producer and its related element type
【问题讨论】:
-
Flux 是一个流而不是一个列表,所以如果你想返回一个流,直接返回 Flux,或者删除“fromPublisher”。如果您想返回一个列表,您可以在通量上执行
collectList并将生成的 Mono 直接放入body -
我也试过了。它仍然给我一个错误。
-
请不要说“我也试过了”试过什么?所有我指出的?我没有看到我在上面的问题中指出的所有试验。另外,不要说“它仍然给我一个错误”什么错误?如果您不向我们展示您所做的事情,我们将无法帮助您。如果您希望得到帮助,请付出一些努力
标签: mono spring-webflux flux