[英]Why pass Mono<ServerResponse> from handler function in webflux router and not Flux<ServerResponse>
我是春天的新手。 我试图以功能方式为 spring webflux 制作一个示例应用程序。 为什么我们的处理函数不能通过 Flux。 有什么方法可以让路由器功能接受它,因为据说路由器功能接受 serverResponse 的子类型。
显示处理程序代码
public Mono<ServerResponse> getShowList(ServerRequest request){
Flux<Show> showList = showRepository.findAll();
Flux<ShowVo> showVoList= showList.map(s -> {
return new ShowVo(s.getId(), s.getTitle());
});
return ServerResponse.ok().contentType(MediaType.APPLICATION_JSON).body(showVoList, ShowVo.class); }
在这里,我将 Mono <ServerResponse> 传递给 Router 函数,但我希望将它作为 Flux <ServerResponse>
路由器功能码
@Bean
public RouterFunction<ServerResponse> routeShow(ShowHandler showHandler){
return RouterFunctions.route(RequestPredicates.GET("/shows").and(RequestPredicates.accept(MediaType.APPLICATION_JSON)), showHandler::getShowList)
}
}
那么有什么办法可以做到,我已经浏览了不同的文章。 我能找到的只是 Mono 但如果我使用基于注释的 webflux 我可以通过通量。
为什么 webhandler 不接受到服务器的流,而您只能返回流是因为 HTTP 协议规范。
如果您希望将数据流式传输到服务器,并将数据流式传输到客户端(全双工),则需要将 websockets 与 webflux 结合使用。
您可以在 webflux 文档中阅读所有相关信息:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.