基于Reactive Stack的Web开发
本文档部分内容介绍了基于Reactive Streams API构建的响应式栈(reactive-stack)Web应用程序在非阻塞服务器(如Netty和Servlet容器)上的支持。各章节分别涵盖了Spring WebFlux框架、响应式WebClient、测试支持,以及响应式库。
对于基于Servlet堆栈的Web应用程序,请参阅基于Servlet堆栈的Web。
部分总结
🗃️ Spring WebFlux
15 个项目
🗃️ WebClient
9 个项目
📄️ HTTP服务客户端
Spring框架允许你将HTTP服务定义为带有HTTP交换方法的Java接口。然后你可以生成一个实现该接口的代理,来执行这些交换操作。这有助于简化HTTP远程访问,并在选择API风格(如同步或响应式)时提供更多的灵活性。
📄️ WebSockets
在Servlet堆栈中查看等效实现。
📄️ 测试
spring-test模块提供了ServerHttpRequest、ServerHttpResponse和ServerWebExchange的模拟实现。有关模拟对象的讨论,请参阅Spring Web Reactive。
📄️ RSocket
本节描述了Spring Framework对RSocket协议的支持。
📄️ 反应式库
spring-webflux 依赖于 reactor-core,并在内部使用它来组合异步逻辑以及提供 Reactive Streams 支持。通常,WebFlux API 返回的是 Flux 或 Mono(因为这些是内部使用的类型),并且可以宽容地接受任何 Reactive Streams Publisher 的实现作为输入。当提供一个 Publisher 时,它只能被视为具有未知语义的流(0..N)。然而,如果语义是已知的,你应该用 Flux 或 Mono.from(Publisher) 将其包装起来,而不是直接传递原始的 Publisher。使用 Flux 与 Mono 的区别很重要,因为它有助于表达元素的数量——例如,是期望一个还是多个异步值,这对于做出决策至关重要(比如在编码或解码 HTTP 消息时)。