什么是 REST API?

REST API(表述性状态转移应用程序编程接口),亦称为 RESTful API,是一种基于 Web 的应用程序编程接口 (API),大量被用于开发 Web 服务和移动应用。

什么是 API?

在我们深入研究 RESTful API 的细节之前,我们必须首先了解一下什么是 API。

API 是一组使不同的系统和应用能够相互通信的协议和例程,而无需开发人员或最终用户知道它们如何实现。通过利用 API,开发人员可以轻松快速地创建可重复使用的 Web 和软件应用。

有许多不同类型的 API 可以服务于不同的用例。REST API 广泛用于构建基于 Web 的 API,是现代 Web 开发的重要组成部分。

什么是 REST?

REST 代表“表述性状态转移”。 这是一种构建 Web 服务的架构风格,为不同的电脑系统提供了通过互联网相互通信的标准化方式。REST 基于一组设计原则,而不是特定的技术或协议,广泛用于构建基于 Web 的 API。

REST 的一个关键特性是使用 HTTP 方法(例如 GET、POST、PUT 和 DELETE)来表示可以在资源上执行的不同操作。这些资源可以是 Web 服务公开的任何类型的数据或功能,一般是使用标准化的数据格式(通常是 JSON)来表示。

REST API 是无状态的,这意味着来自客户端的每个请求都包含完成请求所需的所有信息,并且服务器在请求之间不存储任何客户端情境数据。这使得 REST API 灵活、可扩展且易于缓存。

RESTful API 的工作原理

像所有其他 API 一样,RESTful API 的工作原理是为不同的电脑系统提供一种通过互联网相互通信的标准化方式。具体而言,REST API 公开了第三方应用和服务可以使用标准 HTTP 方法访问和操作的资源。这些资源可以是 API 提供的任何类型的数据或功能,例如用户数据、产品信息或搜索结果。

若要访问 RESTful API 中的资源,客户端将向特定端点(标识资源的 URL)发送 HTTP 请求。请求通常包含附加信息,例如参数、标头和消息正文,具体取决于请求的类型。

服务器处理请求,如果请求成功,则向客户端发回 HTTP 响应。此响应通常包括状态码,用于指示请求是否成功,以及消息正文,其中包含采用标准化格式的请求资源。

由于 REST API 是无状态的,因此服务器不会在请求之间跟踪任何客户端状态。每个单独的客户端请求都包含生成响应所需的所有信息。

REST API 的优势

使用 RESTful API 构建 Web 服务和数据驱动应用有很多优势:

可扩展: RESTful API 设计为可扩展,这意味着它们可以处理大量请求并适应流量峰值。它们使用简单、轻量级的体系结构,无需重新构建整个系统即可轻松添加新功能或资源。

灵活: RESTful API 很灵活,可以与各种编程语言和技术一起使用。它们不与任何特定的平台或语言绑定,这意味着运行在不同操作系统和设备上的客户端均可使用它们。

易于使用: RESTful API 易于使用,可以使用标准 HTTP 方法进行访问,因此所有技能水平的开发人员都可以访问它们。它们为不同系统之间的相互通信提供了一种标准化的方式,这有助于减少开发时间,提高生产力,并最大限度地缩短上市时间。

无状态: RESTful API 是无状态的这一事实意味着它们更可靠,更易于缓存,这有助于减少延迟并提高性能。

安全︰ RESTful API 可以使用多种技术进行保护,例如 SSL/TLS 加密和 OAuth 身份验证。这有助于确保 API 免受未经授权的访问以及客户端数据的安全。

REST API 最佳做法

以下是设计和实现结构良好、功能强大、易于使用、可靠安全的 RESTful API 的一些最佳做法。

正确使用 HTTP 方法: 根据 HTTP 规范,使用适当的 HTTP 方法(GET、POST、PUT、PATCH、DELETE 等)对资源执行不同的操作。例如,使用 GET 检索资源,使用 POST 创建新资源,使用 PUT 更新现有资源,使用 DELETE 删除资源。

使用有意义的 URL: 使用易于阅读和理解的 URL,可以清楚地表明正在访问的资源。避免使用难以记住或识别的含义模糊或无意义的 URL。

使用 JSON 作为您的数据格式: 虽然 RESTful API 可以接受和响应多种数据格式的 API 请求,但 JSON 是事实上的发送和接收 API 数据的现代标准。这是因为对 XML 或纯文本进行解码和编码很麻烦,有些框架甚至不再支持这些格式。

在端点 URL 中使用名词而不是动词: 换句话说,使用 https://www.example.com/posts,而不是 https://www.example.com/getPosts 或 https://www.example.com/createPost。这是因为 GET、POST、PUT、PATCH 和 DELETE 等 HTTP 方法已经是动词形式了。使用名词表示端点实际生成的内容。

不要在响应代码上发挥创意: 使用标准 HTTP 响应代码来表示请求的状态,例如 200 表示成功,404 表示未找到,500 表示服务器错误。这使客户端更容易理解其请求的结果,并采取适当的措施。

文档、文档和更多的文档: 为您的 API 提供清晰而详细的文档,包括有关可用资源、其数据格式和支持的操作的信息。这可以让开发人员更容易理解和使用您的 API。

实施版本控制: 这样可以确保对 API 的更改不会因为强制现有应用迁移到新版本而产生破坏。

在响应正文中返回错误详细信息: 如果您的 API 在 JSON 或响应正文中返回错误详细信息(包括受影响的字段),开发人员将会感谢您。这极有利于调试应用。

保护您的 API: 实施 SSL/TLS 加密、速率限制和客户端身份验证控制等安全措施,以确保威胁行为者无法操纵您的 API 或在 DDoS 攻击中造成其离线。

中文 (CN) 致电我们