REST API是数字世界的关键组成部分,使不同的应用程序和系统能够无缝地相互通信。我们的旅程将从深入探讨REST API架构的六个基本原则开始。这些原则包括客户端-服务器架构、状态无关性、可缓存性、分层系统、统一接口和按需代码。阅读至文章末尾获取速查表。
REST API设计的六个支柱
六个REST API原则:
(1) 客户端-服务器架构: 这个原则将用户界面关注点与数据存储关注点分离,通过简化服务器组件从而提高界面在各平台上的可移植性,并通过简化服务器组件来增强可伸缩性。
(2) 状态无关交互: 每个客户端到服务器的请求必须包含理解和处理请求所需的所有信息。服务器不存储有关客户端的任何会话信息。
(3) 可缓存的响应: 在REST中,响应必须定义为可缓存或不可缓存。这意味着客户端可以将来等效请求的响应数据进行重用,减轻服务器负载并提高应用程序的效率。
(4) 分层系统: 系统通常以具有特定功能的层组织,使得客户端难以判断它们是直接连接到最终服务器还是中间服务器。
(5) 按需代码: 服务器可以通过传输可执行代码(例如Java小程序或JavaScript)来扩展客户端的功能。
(6) 统一接口: 此约束简化并解耦架构,使每个部分能够独立发展。一致接口的四个指导原则是请求中的资源标识、通过表示操作资源、自描述消息和超媒体作为应用程序状态引擎(HATEOAS)。
- 自描述消息: 每个来自客户端的消息都带有详细的说明,就像一份精心编写的食谱,准确告诉服务器要做什么。
- 基于资源: 资源是API世界的名词,如用户、照片、细节,通过URI在请求中进行标识,就像互联网上的地址一样。
- 通过表示操作: 当客户端获取资源的表示时,它获取了修改或删除资源所需的所有详细信息,假设具有权限。
理解这些原则至关重要,因为它们构成了RESTful API建立和运行的基础。
解剖URI
在快节奏的Web开发世界中,REST API就像数字体内错综复杂的血管网络一样重要。它们对于客户端(如浏览器或移动应用)与服务器(数据存储的地方)之间的通信至关重要。让我们通过一个实际示例来揭示URI(统一资源标识符)的元素:
(1) HTTP方法:互联网的动词
- GET 求知者: 使用GET请求检索服务器数据,就像向图书馆员询问一本书一样。GET请求应该是安全和幂等的,这意味着多次发出请求不会导致额外的副作用或服务器状态更改。
- POST:创作者: POST请求创建新资源。在客户端请求服务器处理请求正文中包含的资源时,使用POST是必要的。成功的响应将返回一个包含指向新创建资源的链接的201 Created状态的Location标头。
- PUT 优秀的编辑者: PUT请求更新现有资源或在特定URL上创建它们(如果它们不存在)。它们是幂等的,因此多次发送相同的请求会产生与发送一次相同的结果。
- PATCH:微调器: PATCH部分更新资源,就像纠正整本书而不改变整本书一样。它有时是幂等的,但最好在可能的情况下以这种方式实现。
- DELETE 记录橡皮擦: DELETE请求从服务器的库中删除资源。它们应该是幂等的,后续请求应该返回404 Not Found状态代码。
(2) 协议:参与规则
HTTPS: HTTPS是HTTP的安全版本,使用TLS加密。这是Web服务的黄金标准,保护登录凭据、支付信息和个人数据等敏感数据。最佳实践是默认使用HTTPS以确保数据的完整性和保密性。
(3) 版本控制:保持章节有序
/v1: API版本控制对于在不中断服务的情况下管理更新至关重要。保持一致的版本控制策略,并具有清晰的弃用政策。每个版本都应有文档,并且用户应该被告知新版本。避免过度版本化,为重大更改保留新版本。版本控制是与用户建立的一种契约,承诺在继续发展技术的同时保持稳定性。
(4) 子域:图书馆中的特定过道
api: 子域是组织在线存在的一种很好的方式。使用它们来命名业务的不同区域,分离应用程序环境,简化访问控制,帮助可伸缩性并控制Cookie和会话。只是要注意搜索引擎可能会将子域视为独立的网站。
(5) 端点:流派部分
/users: 端点是表示API的唯一功能或资源的特定URI。它们应该设计得直观、清晰且在所有端点上保持一致。资源命名应该使用名词,并逻辑上表示层次结构和关系。复杂查询应通过查询参数处理。精心设计的端点对于高效、用户友好的API至关重要,就像商场中井然有序的商店提供愉快的购物体验一样。
(6) 分页:索引页面
?page=2&limit=10: 分页将庞大的数据集分解为较小、编号的部分(页面),使数据检索变得可管理和用户友好。使用标准参数,提供导航链接,确保一致的排序,并提供总计和页面元数据。通过使用分页,API确保信息是可访问的,检索信息的体验愉快,就像在井然有序的图书馆中找到合适的书一样。
(7) 过滤:图书馆查询
?age=25&gender=male: 过滤是一种请求满足特定标准的数据的方法。这就像要求知识渊博的导游只向您展示在大型市场中满足您需求的物品一样。为了有效地实施过滤,使用查询参数、清晰一致的命名、支持多个过滤器、高效地查询数据库并记录可用的过滤器。API中的过滤简化了数据检索过程,使其高效且用户友好。通过允许客户端过滤和排序数据,减少了带宽使用并提高了相关性。
通过理解这些URI组件,您正在掌握REST API的艺术。它们是指引数据流动的路标和工具,确保您能够找到并与您需要的信息进行交互。
- 设计 您的API以反映您的域或数据库架构,创建自然而直观的结构。
- 密切关注您的API的性能,使用响应时间和状态代码等指标确保最佳运行。
- 实施强大的身份验证和授权机制,明智地管理CORS,强制执行TLS,实践幂等操作,严格验证输入,限制请求速率,并记录活动而不 compromi敏感数据。