我们目前正在升级 API。以前,对于成功的请求,API 会响应 200 状态代码,并利用会话 ID 进行身份验证。在新版本的 API 中,响应为 202,并且使用 JWT 令牌进行身份验证。
现在,如果有人声称旧 API 是同步的,而新 API 是异步的:
这是否意味着新 API 是使用 HTTP/2 实现的,因为它通常与异步行为相关?
有没有可能我们的请求被服务器接收到并推送到处理队列中但还没有处理成功(我们也可以称之为异步),与HTTP版本的选择无关?如果是这样,为什么我们专门将异步行为归因于 HTTP/2,而不提及 HTTP/1.1 也可以表现出异步行为?我们指的是 HTTP/2 中异步行为的哪一方面?
HTTP/2 并没有从根本上改变底层模型,但它优化了请求和响应的传输方式。除了可以通过单个连接复用多个请求和响应之外,我想不出还有什么可以使 HTTP/2 比 HTTP/1 更加异步。
它不应该从根本上改变 API 的构建方式。也许使用 HTTP/2 而不是 HTTP/1.1 时 API 设计的唯一变化可能是执行许多 HTTP 请求更便宜,因此您可以在大型组合端点上创建更细粒度的端点。
因此,如果您有“HTTP/2 更加异步”这一猜想的来源,那么获得真实的引用或具有更多上下文的链接将有助于更好地理解作者的想法。
你们的服务器是用什么软件做的?异步 VS 同步 很少与 HTTP 1.1 VS 2 有任何关系。所以对于问题#1,我会说“不”。
同步服务器在确定如何响应时可能会挂起,而异步服务器则不会。在这方面最好是异步的。
也许在您使用的软件中,HTTP1.1 与 2 确实很重要,但在 NodeJS 领域和我所知道的大多数 Web 服务器中则不然。