REST API 和 Websocket API [关闭]

Posted

技术标签:

【中文标题】REST API 和 Websocket API [关闭]【英文标题】:REST API along with Websocket API [closed] 【发布时间】:2016-05-09 07:22:25 【问题描述】:

我必须创建一个具有永久连接的应用程序(我需要从服务器发送数据更新),同时我需要配置这个应用程序。我的想法是使用 Socket.IO 进行连接,并将其用于配置,并带有具体的事件名称。

但有人说最好保留 Socket.IO 仅用于从服务器发送数据并使用 REST API 来配置应用程序。

我想知道使用 REST API 和 Websocket 连接是否是一个好习惯,如果不是,为什么。

【问题讨论】:

“有人说” - 谁?您是否尝试过询问他们他们为什么这么说以及他们是否会批准您的 REST 想法?为什么不直接尝试一下看看效果如何? @jonrsharpe 这是我的老板,他说 websocket 不能取代 REST(我同意),我需要一个可信的文档(Oracle、Google 等)来证明使用 Websocket 的合理性,但我没有找到任何关于在 websocket 连接中并行使用 REST API 的文档。 所以您希望我们为您找到一些文档?这显然是题外话。只需与您的老板交谈并就你们之间的方法达成一致。 @jonrsharpe 这不是我问的,我问的是最好的做法是什么,如果使用 REST API 与 Websocket 并行是否好。 那是基于意见的,也是题外话。 【参考方案1】:

您始终可以为不同目的提供 REST API 和 WebSocket API。这取决于您的要求,这取决于您想要实现的目标。

例如,您可以使用 WebSocket API 提供实时通知,而 REST API 可用于管理资源。

您应该注意一些细节:

REST 是一种独立于协议的架构风格,经常通过 HTTP 协议实现,它意味着是无状态的。

在 HTTP 中,通信由客户端驱动:客户端请求,服务器响应。

WebSocket 是一种双向、全双工和持久连接协议,因此它是有状态的。

在 WebSockets 中,一旦建立通信,客户端和服务器都可以不按特定顺序交换帧。


仅举一个提供不同 API 的应用程序示例:Stack Exchange 提供了一个REST API 和一个WebSocket API。

【讨论】:

以上是关于REST API 和 Websocket API [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Websocket API 取代 REST API? [关闭]

使用WebSocket扩展Flask REST API

是否可以通过 GraphQL/REST 后端共享 3rd 方 API websocket/实时连接?

Django - 通过 websocket 在事件上重复发送 API 调用结果(REST 框架 + 通道)

如何使用 Django 通道为 Django Rest Api 打开 Websocket?

Xamarin 上的 Bing Speech API/语音服务(无 REST,sdk websocket 来处理连续识别)