对于许多技术初学者来说,REST 是一个陌生的概念,有时,它是需要学习的复杂概念层中的另一个流行语。作为一名非计算机科学专业的毕业生,当我被告知使用我的团队在黑客马拉松中创建的 REST api 时,我也有同样的感觉。
这就是为什么在本文中,我的目标是尽可能用最简单的语言来解释 REST。
什么是 REST API?
让我们首先确定 REST Api 不是什么。
- REST Api 不是协议。
- REST Api 不是标准。
现在,这不再是阻碍。什么是 REST API?
REST Api 是一种应用程序编程接口,它符合 REST 架构风格的约束,并允许与 RESTful Web 服务(基于 REST 架构的 Web 应用程序)进行交互。您可能已经知道,REST 是Representational State Transfer的首字母缩写。REST 架构约束可以用不同的方式实现。
为什么选择 REST API?
俗话说,
需要是发明之母——柏拉图
了解创建 REST 架构风格的目的很重要。
在创建 REST 之前,SOAP(简单对象访问协议)是促进使用不同语言和不同平台构建的应用程序之间的数据传输的首选协议。
在网络中,协议是一组用于格式化和处理数据的规则
作为一种协议,SOAP 强加了一些内置规则,这些规则增加了它的复杂性和开销,有时会导致更长的加载时间。
作为一个优势,SOAP api 被认为比 REST api 更安全,因为它使用 WS-security 和安全套接字层 (SSL) 进行传输,而 REST 使用 SSL 和 HTTPS(这个优势在一些技术生态系统中仍然存在争议)并且它旨在为大型企业应用程序提供动力。
随着互联网爆炸式增长和更多智能设备的诞生,使数据传输更加无缝的需求也随之增加。然后是 REST 架构风格。它旨在满足物联网、移动设备等现代技术的需求。
使用 Rest api,可以通过 HTTP 以多种格式(JSON、HTML、XML 或纯文本)传输数据。通过 REST api 完成的所有通信都使用 HTTP 请求,与 SOAP 相比需要更少的带宽。
REST API 的原理
如果应用程序实现了由计算机科学家 Roy Fielding 提出的 6 条 REST 架构原则,则该应用程序被认为是宁静的。
- RESTful 应用程序应该具有客户端-服务器通信以便访问资源。通常,客户端是前端(面向用户)应用程序,例如移动应用程序或单页应用程序 (SPA)。服务器是存放资源的后端应用程序。它提供了一个 URL,这是资源的路径。
- RESTful 应用程序应该是无状态的。从客户端发送到服务器的请求应包含使服务器理解请求所需的所有信息,请求之间不存储客户端信息,并且每个请求都是独立且未连接的。HTTP 请求包含授权、缓存、cookie 等信息。
- RESTful 应用程序应在组件之间提供统一的接口,以便以标准形式传输信息。这需要:
- 资源识别
- 使用表示的资源操纵,即客户端可以通过他们收到的表示来操纵资源,因为该表示包含足够的信息来这样做。
- 自我描述的消息。
- 超媒体作为应用程序状态的引擎,即客户端应该能够使用超链接来找到他们在访问资源后可以采取的所有其他当前可用的操作。
- RESTful 应用程序应提供可缓存的数据,以简化客户端-服务器交互。
- RESTful 应用程序应该提供一个分层系统,该系统将参与请求信息检索的每种类型的服务器(负责安全、负载平衡等的服务器)组织到客户端不可见的层次结构中。
- 按需编码。这是可选的。它能够在请求时将可执行代码从服务器发送到客户端,从而扩展客户端功能。
REST API 方法
在 HTTP 中,有五种方法在基于 REST 的架构中常用。如下图所示,这些方法对应于 CRUD 操作。
- POST:POST 方法通常用于创建新资源。
- GET:GET 方法用于读取或检索资源的表示形式。
- PUT:此方法用于更新资源。如果指定的资源不存在,PUT 方法也可用于执行创建操作。
- PATCH:此方法用于修改(更新)资源。这与使用 PUT 方法执行的操作不同。如果资源存在,PUT 方法用请求正文中提供的新信息完全替换指定的资源,否则创建资源。但是,PATCH 方法会根据 HTTP 请求正文中提供的信息修改资源的特定组件。
- DELETE:用于删除由 URI 标识的资源。
我希望你能得到你需要的信息。留意我的下一篇文章。我很乐意收到您的反馈和意见。谢谢阅读。