rest - HTTP/2 多路复用是否违反 REST API 规则?

标签 rest http protocols http2

多路复用是 http/2 的一个非常酷的功能。它允许使用一个连接同时处理来自单个客户端的多个请求。

我的问题是:此多路复用功能是否违反 REST API 规则?

  1. 我了解 REST API 强制执行请求-响应架构,但在未启用服务器推送(流式传输)功能的情况下进行多路复用本质上是一个请求 -> 一个响应范例,因此这并不违规,对吗?
  2. REST API 还强制执行无状态,但我迷失了方向:通过单个连接进行多路复用被视为有状态还是无状态?

如果我想将当前使用 HTTP/1.1 实现的 REST API 升级为使用 HTTP/2,我是否有权使用多路复用功能,或者我必须逐个流(req1、res1、req2) ,res2...)?

最佳答案

网络多路复用和 REST API 是两个完全不同的事务/责任层。

多路复用是关于通信信号如何流动的,而不是关于 HTTP 消息通信的架构模式是什么(这就是 REST 的全部内容)。

从 REST 角度来看,这并不重要:

  1. 电信号如何在有线或无线中流动;
  2. 您使用什么类型的电缆或其他物理装置来传输数据;
  3. 即使您在多个请求-响应周期中维护单个物理 (TCP) 连接,或者在每个 HTTP 请求-响应中打开和关闭 TCP 连接;
  4. 即使你使用 TCP 之外的其他协议(protocol)(是的,这不是一个好主意,但从理论上讲,只要保证通信具有完整性、一致性和稳定性(这是 TCP 带来的全部),那也没有多大关系物理连接是如何建立的)。

因为,

REST 是一种用于实现 Web 应用程序的架构(Web 应用程序的设计)模式。

多路复用是关于如何实现物理信号/连接的。

只要 HTTP 消息在客户端和服务器之间无缝流动,物理层或传输层就与 REST 端点无关;因此,多路复用中没有任何内容可以违反 REST 中的任何内容,再次强调:这两者服务于完全不同的目的。

关于rest - HTTP/2 多路复用是否违反 REST API 规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70489531/

相关文章:

php - header 中的 AuthKey

http - 通过 SSL 传递 GET 变量 = 安全?

c++ - Web 服务器如何知道何时完全接收到 HTTP 请求?

C:简单的HTTP服务器。读取本地文件并从浏览器下载

protocols - 适用于 Windows IOT Core 的 MQTT 代理?

c# - 在 C# 中使用 wcf 将 web url 作为参数传递到 web 服务中

api - 要求 REST api 请求包含 cookie 是个好主意吗?

java - 我应该将文件名存储在 Java 枚举还是属性文件中

javascript - C.S. 基础知识 : Understanding Data Packets, 协议(protocol),Wireshark

xcode - Swift:如何将协议(protocol)类型转换为特定协议(protocol)?