使用HTTP/2的REST API

Sor*_*ter 30 api rest http http2

几个月前,HTTP/2已发布为RFC7540.这将如何影响在HTTP/1.1上构建的现有REST API

根据维基百科,HTTP/2添加了新功能.我们如何利用这些新功能?

随意改善这个问题.

谢谢.

sbo*_*det 26

HTTP的主要语义已保留在HTTP/2中.这意味着,它仍然有HTTP methodsGET,POST等,HTTP headers以及URIs标识资源.

HTTP/2相对于HTTP/1.1的变化是HTTP语义(例如"我想在主机上PUT资源")通过线路传输的方式./foodomain.com

有鉴于此,基于HTTP/1.1构建的REST API将继续像以前一样透明地工作,不会对应用程序进行任何更改.运行应用程序的Web容器将代表应用程序将新的有线格式转换为通常的HTTP语义,并且应用程序只需查看更高级别的HTTP语义,无论它是通过HTTP/1.1还是HTTP /传输2通过电线.

由于HTTP/2有线格式更有效(特别是由于多路复用和压缩),HTTP/2之上的REST API也将受益.

HTTP/2中存在的另一个主要改进是HTTP/2 Push针对相关资源的有效下载,并且它在REST用例中可能没用.

HTTP/2的典型要求是通过TLS部署.这需要部署人员转移httphttps,并设置所需的基础设施以支持(从受信任的机构购买证书,更新它们等).

  • DZone文章中的一位名叫Guy Levin的作者对此有逐字记录:https://dzone.com/articles/benefits-of-rest-apis-with-http2#20(或者相反,只是在这里看日期...) (3认同)
  • 这是一个很好的总结,但还有一个补充:服务器推送对于 REST API 非常有用,它改变了一切,也解决了获取不足/过度获取的问题。https://apisyouwonthate.com/blog/lets-stop-building-apis-around-a-network-hack Vulcain 利用更新的 Preload 标头让客户端选择他们想要的推送。https://github.com/dunglas/vulcain#pushing-relations (2认同)

小智 5

HTTP / 2规范故意没有为应用程序程序员引入新的语义。事实上,作为开发人员,主要的客户端库(iOS上的NSUrlSession,Android上的OkHttp,React Native,浏览器环境中的JS)对您透明地支持HTTP / 2。

由于HTTP / 2能够通过单个TCP连接多路复用多个请求,因此过去应用程序开发人员进行的某些优化(例如请求批处理)将变得过时甚至适得其反。

推送功能可能会用于传递事件,并且将能够在某些应用程序中替代轮询以及可能的Web套接字。

HTTP / 2到REST API的服务器推送功能的一种可能应用是通过提前将预期的请求推送给客户端而不是等待它们到达的方式,在反向代理级别上加速旧版应用程序的能力。即在登录请求完成后立即将答案推送到用户个人资料以及其他常见的API调用。

但是,尚未在服务器和客户端基础结构中广泛实施Push。