有人可以告诉我或给出一个使用WebFlux、RScoket 和 Spring(或 SpringBoot)的现成 CRUD 示例吗?
我研究了RSocket文档WebFlux,也写了我的简单示例,但我希望看到一个真正的CRUD应用程序使用RSocket的基本方法。
我将不胜感激。谢谢。
有人可以告诉我或给出一个使用WebFlux、RScoket 和 Spring(或 SpringBoot)的现成 CRUD 示例吗?
我研究了RSocket文档WebFlux,也写了我的简单示例,但我希望看到一个真正的CRUD应用程序使用RSocket的基本方法。
我将不胜感激。谢谢。
我维护了一个 Spring/RSocket 示例项目,其中包含 4 种基本的 RSocket 交互模式。
如果您只需要简单 CRUD 操作的请求/回复案例,请检查请求和响应模式,并选择传输协议 TCP 或 WebSocket。
要实现 CRUD 操作,只需为它们定义 4 个不同的路由,例如使用 URI 定义 RESTful API,您必须对命名有一个很好的计划,但是在 RSocket 中没有 HTTP 方法可以帮助您区分相同的路由。
例如,在服务器端,我们可以声明一个@Controller
来处理这样的消息。
@Controller
class ProfileController {
@MessageMapping("fetch.profile.{name}")
public Mono<Profile> greet(@DestinationVariable String name) {
}
@MessageMapping("create.profile")
public Mono<Message> greet(@Payload CreateProfileRequest p) {
}
@MessageMapping("update.profile.{name}")
public Mono<Message> greet(@DestinationVariable String name, @Payload UpdateProfileRequest p) {
}
@MessageMapping("delete.profile.{name}")
public Mono<Message> greet(@DestinationVariable String name) {
}
}
在客户端,如果是 Spring Boot 应用,可以RSocketRequester
像这样使用 RSocket 与服务端交互。
//fetch a profile by name
requester.route("fetch.profile.hantsy").retrieveMono()
//create a new profile
requester.data(new CreateProfileRequest(...)).route("create.profile").retrieveMono()
//update the existing profile
requester.data(new UpdateProfileRequest(...)).route("update.profile.hantsy").retrieveMono()
//delete a profile
requester.route("delete.profile.hantsy").retrieveMono()
当然,如果你只是构建一个 rsocket 协议暴露的服务,客户端可以是 rsocket-js 项目或其他语言和框架,如 Angular、React 或 Android 等。
更新:我在我的 rsocket 示例代码中添加了一个crud 示例,并且我在 Medium 上发表了一篇文章。