本文介紹了文本/事件流與應用程序/流之間的區別是什么的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
@GetMapping(path = "/cars", produces = "text/event-stream")
public Flux<Car> getCarStream() {
System.out.println("application/stream+json");
return this.repository.findCarsBy().log();
}
上面的代碼和下面的代碼有什么區別:
@GetMapping(path = "/cars", produces = "application/stream+json")
public Flux<Car> getCarStream() {
System.out.println("application/stream+json");
return this.repository.findCarsBy().log();
}
到目前為止,我發現了相互矛盾的信息:一些人說它們都是指服務器發送的事件,另一些人說它們是有區別的。
推薦答案
tl;dr:dzone文章是錯的,羅森的話是對的。
text/event-stream
是服務器發送事件(SSE)的官方媒體類型;它將為數據位添加data:
前綴,您也可以選擇前綴來更改該數據段對客戶端的含義。此媒體類型適用于瀏覽器,因為它們使用EventSource
JavaScript API支持該類型。
application/stream+json
用于服務器到服務器/http客戶端(任何不是瀏覽器的內容)的通信。它不會為數據添加前綴,只會使用CRLF來拆分數據片段。請注意,Spring團隊正在重新考慮該媒體類型,因為SPR-16742(請不要猶豫在這里發表評論!)。
這篇關于文本/事件流與應用程序/流之間的區別是什么的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,