WebSocket和REST API有什么不同?

15

我在获取或发布某些数据时,通常使用REST API。但是WebSocket也可以做到这一点。

因此,当我尝试获取或发布一些数据时,我对WebSocket和REST API之间的区别感到困惑。

4个回答

18
REST API使用HTTP作为通信的基础协议,遵循请求和响应范 paradigm。但是,通过WebSockets,尽管通信仍然开始于HTTP,如果服务器和客户端都符合协议(并非所有实体都支持WebSockets协议),则会进一步提升以遵循WebSockets协议。
现在,通过WebSockets,可以在客户端和服务器之间建立双向且持久的连接。这意味着与请求和响应不同,连接保持打开状态,只要应用程序正在运行,并且由于是全双工的,因此可以进行双向同时通信,即服务器现在能够初始化通信并将某些数据“推送”到客户端。
这是实时技术中主要使用的概念,其中您能够获得新的更新形式以服务器推送而无需客户端重复请求(刷新页面)。此类应用程序的示例包括Uber汽车位置跟踪、推送通知、股票市场实时更新等。
这是我本月早些时候关于WebSockets的演示视频,介绍了它们与使用常规REST API的区别:https://www.youtube.com/watch?v=PJZ06MLXGwA&list=PLZWI9MjJG-V_Y52VWLPZE1KtUTykyGTpJ&index=2

7
你可以同时提供 REST API 和 WebSocket API 以实现不同的功能。这取决于你的需求和想要实现的目标。
例如,WebSocket API 可用于提供实时通知,而 REST API 可用于管理资源。
以下是一些需要注意的细节:
- REST 是一个协议无关的架构风格,经常在 HTTP 协议上实现,并且应该是无状态的。 - WebSocket 是一个双向、全双工和持久连接协议,因此它是有状态的。
举个例子,提供不同 API 的应用程序之一是 Stack Exchange,它提供了 REST APIWebSocket API

2
我尚未完全理解REST API是什么,但我猜你是指提供结构化数据的Web系统,这些数据与特定资源相关,例如客户或产品,在HTTP的POST或GET调用中。从实际和简单的角度来看,主要区别在于HTTP GET / POST是请求 - 响应协议。服务器将在客户端发送请求后发送响应。在Websockets的情况下,通信是双向的。服务器或客户端都可以随时向对方发送信息。为了更好地理解差异,如果使用HTTP GET获取股票市场数据,则每X秒钟页面将向服务器发出新请求以获取更新的价格。使用Websockets,服务器可以在价格变动后立即将新价格直接发送到Web浏览器。您可能还想了解长轮询技术,它是使用HTTP GET / POST提供类似Websockets功能的技术(尽管它是完全不同的东西)。

0
WebSockets(网络套接字)就像套接字一样,是两个相邻层之间的接口。
具体地说,在ARPANET参考模型中,套接字是传输层和应用层之间的接口;在OSI参考模型中,它们代表会话层和传输层之间的接口。接口意味着它们位于各层之间(在边界上)。
WebSockets是套接字接口从OSI模型的会话/传输层边界“迁移”到会话/表示层边界的过程。这样做是为了克服套接字在Web世界中的限制,因为在Web上所有通信默认只能在端口80上进行,即HTTP流量的端口。HTTP协议位于(可靠传输的)TCP传输层之上,它在OSI模型中属于会话层,因此对于它上面的表示层来说,它也可以被视为一种“传输”。
由于“API”中的“I”代表“接口”,套接字和WebSockets都是一种API形式,尽管该术语属于现代行话。REST API也是OSI模型的会话和表示层之间的接口。
REST API接口和WebSockets接口的区别在于,WebSockets是通过HTTP上建立的全双工持久TCP连接,采用3路握手协议。而REST API通过HTTP进行请求/响应(non-standard)协议,就像HTTP一样,在每个新请求时都会创建一个TCP连接,即不是持久的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接