RESTful API(Representational State Transfer)是一种基于 Web 的 API 设计风格,具有简洁、结构清晰、语义明确等特点,常用于前后端分离的系统中。
 
 
一、RESTful API 的核心理念
 
REST 不是协议,而是一种 设计风格,其核心理念是:
 
- 将资源作为核心(Everything is a resource)
- 通过 HTTP 方法对资源进行操作(使用标准动词)
- 无状态通信(Stateless)
- 使用统一接口(Uniform Interface)
 
二、RESTful API 的命名规则(规范)
 
1. 资源 URI 命名
 
- 使用名词,且一般使用复数形式
- 避免动词(动作由 HTTP 方法表示)
例如:
 
GET    /users           获取用户列表
GET    /users/123       获取 ID 为 123 的用户
POST   /users           创建一个新用户
PUT    /users/123       更新 ID 为 123 的用户
DELETE /users/123       删除 ID 为 123 的用户
 
2. 使用标准 HTTP 方法表示操作
 
| HTTP 方法 | 作用 | 
|---|
| GET | 获取资源 | 
| POST | 创建资源 | 
| PUT | 更新资源(整体) | 
| PATCH | 更新资源(部分) | 
| DELETE | 删除资源 | 
 
3. 使用路径层级表达资源之间的关系
 
GET /users/123/orders         获取用户 123 的所有订单
GET /users/123/orders/456     获取用户 123 的订单 456
 
4. 使用查询参数表示过滤、排序、分页等
 
GET /products?category=phone&sort=price_asc&page=2&limit=20
 
 
三、RESTful API 的特点
 
| 特点 | 描述 | 
|---|
| 资源导向 | 所有内容都被抽象为资源(User、Order、Article 等) | 
| 使用标准协议 | 基于 HTTP 协议,直接使用其方法(GET、POST 等) | 
| 无状态通信 | 每次请求都包含所有上下文,不依赖服务器保存状态 | 
| 统一接口 | 接口风格统一、易于理解和使用 | 
| 可缓存 | 客户端可根据响应头对资源进行缓存,提高性能 | 
| 分层架构 | 客户端无需知道请求最终由谁处理(例如中间层、负载均衡等) | 
 
 
四、RESTful API 与传统 API 的对比
 
| 比较项 | RESTful API | 传统 API 风格 | 
|---|
| 接口风格 | 资源导向,结构清晰 | 动作导向,接口混乱 | 
| 动作表示 | 使用 HTTP 方法表示动作 | 接口路径中包含动词(如 /getUser) | 
| 可读性 | 高,可直观理解操作含义 | 低,需要阅读文档才能理解 | 
| 维护性 | 易于扩展和维护 | 扩展性差,接口膨胀 | 
 
 
五、常见 RESTful API 错误码(建议)
 
| 状态码 | 含义 | 说明 | 
|---|
| 200 | OK | 请求成功 | 
| 201 | Created | 成功创建资源 | 
| 204 | No Content | 请求成功,但无返回内容 | 
| 400 | Bad Request | 请求参数有误 | 
| 401 | Unauthorized | 认证失败 | 
| 403 | Forbidden | 没有权限访问资源 | 
| 404 | Not Found | 资源不存在 | 
| 500 | Internal Server Error | 服务器内部错误 | 
 
 
六、什么时候应该用 RESTful?
 
- 资源之间关系明确、结构层级清晰
- 系统需要公开标准 API 供外部系统调用
- 系统前后端分离,接口要语义化、易于文档化