我是网络套接字编程的新手。我有超过 10 个用 @GetMapping
注释的方法,其中返回的数据是从 MySQL 数据库读取的。
任何人都可以帮助我了解如何编写 WebSockets。
我的WebRestController.java如下所示:
@CrossOrigin(origins = "http://localhost:4200", allowedHeaders="*")
@RestController
@RequestMapping("/api")
public class WebRestController {
@GetMapping("/summary")
public String Summary() { /* ... */}
@GetMapping("/erday")
public String Erday(String erday) { /* ... */}
@GetMapping("/count")
public String Count(@RequestParam Map<String,String> queryParam,
String date, String target) { /* ... */}
@GetMapping("/details")
public String Details(@RequestParam Map<String,String> queryParam,
String date, String target) { /* ... */}
@GetMapping("/devmawah")
public String DevMawah(@RequestParam Map<String,String> queryParam,
String date, String target) { /* ... */}
// ....
}
我之前在网上尝试过很多次寻找解决方案,但找不到。我找到的只是聊天应用程序的示例,它们有 2 个端点用于发送和接收。
最佳答案
WebSockets 用于双向通信,而不是真正用于 REST 风格的服务(在我看来,HTTP 更优越)。核心区别在于 HTTP 本质上是一种请求-应答协议(protocol),非常适合 REST,而 WebSocket 则以消息为中心。当然,您可以认为请求-答复是基于消息的通信的特化。
有几篇关于此主题的文章(google REST over WebSocket
),甚至还有一些 StackOverflow 问题详细介绍了优缺点,例如 Is ReST over websockets possible? 。
据我所知,允许您通过 WebSocket 执行类似于 REST 的操作而无需重写 RestController 的唯一方法是 swagger-socket ,但我不建议使用它,因为该项目现在似乎不活跃,而且似乎没有被广泛使用。
或者,您可以将 @RequestMapping
或 @GetMapping
注释替换为 @MessageMapping
注释并通过消息对您的 API 进行建模(例如,客户端向给定目的地发送一条“GET”消息,然后您发回一条包含资源的消息)。
关于spring-boot - 如何在 Spring-boot 中为 Rest 调用编写 webSockets?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50984497/