透明加解密在企业文件保护中的部署逻辑与 Ping64 实施路径
2026/4/28 3:00:28
RESTful API 是当今 Web 服务中最主流的 API 设计风格。它基于REST(Representational State Transfer,表述性状态转移)架构风格,由 Roy Fielding 在 2000 年的博士论文中首次提出。
REST 不是一种协议或标准,而是一种软件架构风格(Architectural Style)。它的目标是让分布式系统(尤其是 Web 系统)更简单、可扩展、可靠。
REST 的核心思想:
REST 架构必须满足以下 6 个约束,才能称为真正的 RESTful 系统:
| 约束名称 | 英文原名 | 核心含义 | 实际意义 |
|---|---|---|---|
| 客户端-服务器 | Client-Server | 客户端和服务器分离,职责清晰 | 支持前后端分离,便于独立演进 |
| 无状态 | Stateless | 每个请求必须包含所有必要信息,服务器不保存客户端上下文 | 易于横向扩展、负载均衡 |
| 可缓存 | Cacheable | 响应必须明确标明是否可缓存 | 提高性能,减少服务器压力 |
| 分层系统 | Layered System | 客户端不知道自己连接的是最终服务器还是中间层(如代理、网关) | 支持负载均衡、缓存代理、安全层等 |
| 统一接口 | Uniform Interface | 通过统一的约束来简化系统架构(最重要约束,见下文) | 降低耦合,提升可演化性 |
| 按需代码(可选) | Code on Demand | 服务器可向客户端发送可执行代码(如 JavaScript) | 实际很少使用 |
统一接口(Uniform Interface)是 REST 最关键的约束,它进一步分解为 4 个子原则:
/users/123。| 特征 | 说明 | 示例 |
|---|---|---|
| 以资源为中心 | URL 表示资源(名词),而非操作(动词) | /articles/123而不是/getArticle?id=123 |
| 使用标准 HTTP 方法 | GET(读取)、POST(创建)、PUT/PATCH(更新)、DELETE(删除) | GET /users获取用户列表 |
| 无状态 | 每次请求独立完整,服务器不记住上一次请求 | 登录后每次请求都要带 Token |
| 支持多种表述格式 | 通常是 JSON,也可支持 XML、HTML 等 | Content-Type: application/json |
| 使用 HTTP 状态码 | 表达操作结果 | 200 OK、201 Created、404 Not Found |
| 可缓存 | 通过 Cache-Control、ETag 等头部控制缓存 | 静态资源可缓存 |
| 分层、可扩展 | 支持代理、网关、CDN 等中间层 | 无需改动客户端即可增加安全层 |
| 方面 | RESTful API | 非 RESTful(如 RPC 风格) |
|---|---|---|
| URL 设计 | 名词 + 资源路径 | 动词 + 操作 |
| 示例 | DELETE /users/123 | /deleteUser?id=123 |
| 操作表达方式 | HTTP 方法 | URL 路径或参数 |
| 状态管理 | 无状态 | 可能有状态(Session) |
| 扩展性 | 高(统一接口) | 较低(接口不统一) |
| 学习成本 | 低(大家都懂 HTTP) | 高(需学习自定义规则) |
RESTful API 就是:将服务器的一切视为资源,通过统一的 HTTP 接口(方法 + URI + 状态码),以无状态、可缓存的方式对资源的表述进行转移和操作的 Web API 设计风格。
掌握这些概念后,你就能更好地理解为什么现代 API 都倾向于使用 RESTful 风格设计。如果你想进一步了解 REST 的设计原则、HTTP 方法对应、状态码使用或实际案例,我可以继续深入讲解!