[英]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.