Eka*_*ina 13 java project-reactor spring-webflux
@GetMapping(path = "/cars", produces = "text/event-stream")
public Flux<Car> getCarStream() {
System.out.println("application/stream+json");
return this.repository.findCarsBy().log();
}
Run Code Online (Sandbox Code Playgroud)
上面的代码和下面的有什么区别:
@GetMapping(path = "/cars", produces = "application/stream+json")
public Flux<Car> getCarStream() {
System.out.println("application/stream+json");
return this.repository.findCarsBy().log();
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我发现了矛盾的信息:有人说它们都表示服务器发送的事件,而其他人则表示存在差异。
Bri*_*zel 19
TL;DR:那篇 dzone 文章是错误的,而罗森的谈话是正确的。
text/event-stream是服务器发送事件 (SSE) 的官方媒体类型;它将用前缀作为数据位的data:前缀,您还可以选择您的前缀来为客户端更改该数据段的含义。此媒体类型适用于浏览器,因为它们支持使用EventSourceJavaScript API。
application/stream+json用于服务器到服务器/http 客户端(任何非浏览器)的通信。它不会为数据添加前缀,只会使用 CRLF 来拆分数据片段。请注意,Spring 团队正在重新考虑该媒体类型,因为SPR-16742(不要犹豫在那里发表评论!)。