概述
REST API(也称为 RESTful API )是遵循 REST 架构规范的应用编程接口(API 或 Web API),支持与 RESTful Web 服务进行交互。REST 指表现层状态的转移,最初由计算机科学家 Roy Fielding 提出。
API 是什么?
API 是由一组定义和协议组合而成,可用于构建和集成应用软件。我们可以把 API 当做信息生产者和信息消费者(用户)之间签订了一份合同——消费者请求(呼叫)所需的内容和生产者回应(响应)被需要的内容。例如,提供天气服务的 API 可指定用户提供邮编,同时它的响应由两部分组成,第一部分是最高温度,第二部分是最低温度。
换言之,如果想与计算机或系统交互以检索信息或执行某项功能,API 可帮助我们将需要的信息传达给系统,使其能够理解并响应对应的请求。
我们可以把 API 看做是传递者,在用户、客户端与他们想要的资源,或 Web 服务之间的中介。它也是企业在共享资源和信息的同时保障安全、访问控制和身份验证的一种方式,它可以帮助确定哪些人可以访问什么内容。
API 的另一个优势是无需了解缓存的具体信息,即不需要知道怎么获取资源或资源的来源。
如何理解 REST 的含义?
REST 是一组架构规范,并非协议或标准。API 开发人员可以采用各种方式实现 REST。
当客户端通过 RESTful API 发出请求时,它会将资源状态的表示方式传递给请求者或终端。这个信息或表述会通过 HTTP 以下列某种格式传输:JSON(Javascript 对象标记)、HTML、XLT、Python、PHP 或纯文本。JSON 是最常用的编程语言,虽然它的名字寓意“标记 JavaScript 对象”,但它适用于各种语言,并且人和机器都能读。
注意事项:如果想发送一个遵循 RESTful 风格的 HTTP 请求,请求头和请求参数也同样很重要,因为里面会包含请求的元数据、授权、统一资源标识符(URI)、缓存、cookie 等重要标识信息。而每个请求头和响应头,都有自己的 HTTP 连接信息和状态码。
如何实现 RESTful API?
一个 RESTful API,必须遵循以下规则:
- 客户端-服务器架构由客户端、服务器和资源组成,并且通过 HTTP 管理请求。
- 无状态客户端 - 服务器通信,即 Get 请求间隔期间,不会存储任何客户端信息,并且每个请求都是独立的,互不关联。
- 可缓存性数据:可简化客户端-服务器交互。
组件间的统一接口:使信息以标准形式传输。要求如下:
- 所请求的资源可识别,并与发送给客户端的表述分离。
- 客户端可通过接收的表述操作资源,因为表述包含操作所需的充足信息。
- 返回给客户端的自描述消息包含充足的信息,能够指明客户端应该如何处理所收到的信息。
- 超文本/超媒体可用,是指在访问资源后,客户端应能够使用超链接查找其当前可采取的所有其他操作。
- 组织各种类型服务器(负责安全性、负载平衡等的服务器)的分层系统会参与将请求的信息检索到对客户端不可见的层次结构中。
- 按需编码(可选):能够根据请求将可执行代码从服务器发送到客户端,从而扩展客户端功能。
虽然 REST API 需要遵循这些标准,但这仍比遵循规定的协议更容易,如 SOAP(简单对象访问协议),该协议具有 XML 消息传递、内置安全性和事务合规性等具体要求,因此速度较慢、结构繁重。
相比之下,REST 则是一组可按需实施的准则,使 REST API 速度更快、更轻,可扩展性更高,非常适合物联网(loT) 和移动应用开发。
API 开发神器推荐
熟悉 REST API 设计和测试的同学应该知道,设计 API 涉及很多内容,从数据结构到测试到错误处理再到文档。团队中所有成员都在围绕 API 文档工作,而我们使用的 API 工具也越来越多:Swagger 定义 API;Postman调试API;Jmeter 测试 API。如果需要模拟数据,还必须设置模拟服务器并编写一些 Faker.js。这些操作过于繁琐,我们要反复地在各个软件之间来回复制黏贴,使的软件开发人员不能专注于自己的事情,现在有个免费神器就能包揽这些活儿:Apifox。
Apifox 是接口管理、开发、测试全流程集成工具,定位 Postman + Swagger + Mock + JMeter。通过一套系统、一份数据,解决多个系统之间的数据同步问题。只要定义好接口文档,接口调试、数据 Mock、接口测试就可以直接使用,无需再次定义;接口文档和接口开发调试使用同一个工具,接口调试完成后即可保证和接口文档定义完全一致。
知识扩展:
了解更多 REST API 相关知识。