REST(Representational State Transfer,表述性状态转移)是由 Roy Fielding 于 2000 年在博士论文中提出的架构风格。RESTful API 是遵循 REST 原则的 Web API 设计规范,以 资源为中心,使用 HTTP 方法操作资源。
RESTful API 的核心定位是 Web 服务的标准化设计风格。它提供了:
# 好的 URI 设计
GET /users # 获取用户列表
GET /users/123 # 获取单个用户
POST /users # 创建用户
PUT /users/123 # 更新用户
DELETE /users/123 # 删除用户
# 关系资源
GET /users/123/orders # 获取用户的订单
GET /users/123/orders/456 # 获取用户的某个订单
# 过滤/分页/排序
GET /users?page=1&limit=20
GET /users?sort=created_at&order=desc
GET /users?age=18&status=active
# 搜索
GET /users?q=john
# 字段选择
GET /users?fields=id,name,email
# 嵌套资源
GET /users/123/orders/456/items
// 请求示例
GET /api/v1/users/123 HTTP/1.1
Host: api.example.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
Accept: application/json
// 成功响应
{
"code": 0,
"data": {
"id": 123,
"name": "Alice",
"email": "alice@example.com",
"created_at": "2024-01-15T10:30:00Z"
},
"message": "success"
}
// 分页响应
{
"code": 0,
"data": {
"items": [...],
"pagination": {
"page": 1,
"limit": 20,
"total": 150,
"pages": 8
}
},
"message": "success"
}
// 错误响应
{
"code": 40001,
"message": "Invalid email format",
"errors": [
{
"field": "email",
"message": "Email is required and must be valid"
}
]
}
| 对比项 | RESTful | GraphQL |
|---|---|---|
| 数据获取 | 固定端点 | 按需查询 |
| 过/欠获取 | 可能 | 不会 |
| 版本管理 | URL 版本 | Schema 演进 |
| 缓存 | HTTP 缓存 | 需要自定义 |
| 学习曲线 | 平缓 | 较陡 |
| 适用场景 | 通用 API | 复杂数据查询 |
REST 核心原则、HTTP 方法、状态码、URI 设计
请求/响应格式、认证授权、错误处理、版本管理
Postman、Swagger/OpenAPI、限流、缓存策略
GraphQL 对比、微服务 API 网关、API 安全
RESTful API 是 Web 服务的"世界语"。
它用 资源、HTTP 方法、状态码 构建了一套简单、统一、可扩展的 API 设计标准。无论你使用什么编程语言或框架,RESTful 都是 API 开发的首选风格。
掌握 RESTful API 设计,意味着你能 构建清晰、可维护、易使用的 Web API。
"好的 API 设计让调用者感到愉悦。" 📡