RESTful API 设计最佳实践
本文由一缘原创整理,系统梳理 RESTful API 设计的核心原则与实战技巧,适合所有后端/全栈开发者。
RESTful API 设计最佳实践
高质量的 API 是现代后端和前后端分离架构的基石。
1. 资源建模
- 资源用名词复数表示,如
/users
、/posts
- 子资源用嵌套路径,如
/users/123/posts
2. HTTP 方法与语义
- GET:获取资源
- POST:创建资源
- PUT:整体更新
- PATCH:部分更新
- DELETE:删除资源
3. 状态码与响应规范
1. HTTP 状态码(协议层)
- 200 OK:成功
- 201 Created:创建成功
- 204 No Content:删除成功
- 400 Bad Request:参数错误
- 401 Unauthorized:未认证
- 403 Forbidden:无权限
- 404 Not Found:资源不存在
- 500 Internal Server Error:服务器错误
HTTP 状态码用于表达请求在协议层的处理结果,建议合理使用。
2. 业务 code(业务层)
响应体中的 code
字段用于表达业务层的处理结果,不应与 HTTP 状态码重合,而是用于区分具体业务场景:
code: 0
—— 业务处理成功- 其他 code —— 业务错误(如验证码错误、token 过期、权限不足等)
示例:业务成功
{
"code": 0,
"data": { "id": 1, "name": "Tom" },
"msg": "success"
}
示例:业务错误(如验证码错误)
{
"code": 1001,
"msg": "验证码错误"
}
示例:token 过期
{
"code": 1002,
"msg": "token 已过期"
}
建议将常见业务错误码统一管理,便于前后端协作和国际化。
4. 幂等性与安全性
- GET/PUT/DELETE 应幂等,POST 通常不幂等
- 避免副作用操作用 GET
- 幂等实现:如幂等 key、幂等 token
5. 版本管理
- 推荐 URL 版本号,如
/api/v1/users
- 或用 Accept header:
Accept: application/vnd.myapp.v1+json
6. 分页、过滤与排序
- 分页参数:
/users?page=2&size=10
- 过滤参数:
/users?role=admin
- 排序参数:
/users?sort=created_at,desc
7. 安全认证与授权
- 推荐 JWT/OAuth2 方案
- 认证信息放 header:
Authorization: Bearer <token>
- 敏感操作需权限校验
8. 错误处理与国际化
- 错误响应结构统一
- 支持多语言 msg
{
"code": 1001,
"msg": "用户名或密码错误",
"msg_en": "Invalid username or password"
}
9. 实战案例:用户管理 API 设计
GET /api/v1/users # 获取用户列表
POST /api/v1/users # 创建用户
GET /api/v1/users/{id} # 获取用户详情
PUT /api/v1/users/{id} # 更新用户
DELETE /api/v1/users/{id} # 删除用户
请求示例:
POST /api/v1/users
Content-Type: application/json
{
"name": "Tom",
"email": "tom@example.com"
}
响应示例:
{
"code": 0,
"data": { "id": 1, "name": "Tom", "email": "tom@example.com" },
"msg": "success"
}
10. API 文档与自动化测试
- 推荐 OpenAPI/Swagger 规范
- 自动生成文档与 Mock
- 用 Postman/Insomnia/pytest 等自动化测试
结语
RESTful API 设计是后端工程师的必备技能,规范的 API 能极大提升团队协作与系统可维护性。欢迎留言交流更多 API 设计经验!