前后端分离成为主流后,API 就是前后端之间的"合同"。设计得好,团队协作顺畅、调用方省心;设计得差,文档越写越长,谁用谁骂。RESTful 是目前最通用的 API 设计风格,本文给出可直接落地的最佳实践。

1. REST 的核心思想

REST(Representational State Transfer)把一切都抽象为资源,每个资源有唯一的 URL,用 HTTP 方法表达对资源的操作:

HTTP 方法语义示例
GET读取资源(幂等)GET /users/42
POST创建资源POST /users
PUT整体更新(幂等)PUT /users/42
PATCH局部更新PATCH /users/42
DELETE删除资源DELETE /users/42

注意:URL 里只出现名词,动词交给 HTTP 方法。用 GET /users/42 而不是 GET /getUser

2. 资源命名规范

3. 请求与响应设计

统一的响应结构能降低调用方的解析成本:

{
  "code": 0,
  "data": {
    "id": 42,
    "name": "Ada",
    "email": "ada@example.com",
    "created_at": "2026-07-01T10:00:00Z"
  }
}

同时要正确使用 HTTP 状态码:

不要把失败都包装成 200 + code,状态码本身就该表达语义。

4. 分页、过滤与排序

列表接口必须考虑数据量,用查询参数统一约定:

# 分页:page 从 1 开始,size 默认 20,最大 100
GET /users?page=2&size=20

# 过滤:status=active 的用户
GET /users?status=active

# 排序:按创建时间倒序
GET /users?sort=-created_at

响应里同时返回分页元信息:

{
  "data": [],
  "pagination": {
    "page": 2,
    "size": 20,
    "total": 153,
    "total_pages": 8
  }
}

5. 版本与兼容

API 一旦上线就会被调用方依赖,破坏性变更必须通过版本控制:

6. 用 curl 调试接口

# 带查询参数的 GET
curl "https://api.example.com/v1/users?page=1&size=10"

# POST 创建资源
curl -X POST https://api.example.com/v1/users \
  -H "Content-Type: application/json" \
  -d '{"name": "Ada", "email": "ada@example.com"}'

# 查看响应头(状态码、缓存策略等)
curl -i https://api.example.com/v1/users/42

# 删除资源
curl -X DELETE https://api.example.com/v1/users/42
💡 学习建议:找一个真实公开 API(如 GitHub API)用 curl 逐个方法调用,再对照它的官方文档思考"为什么这么设计",是提升 API 设计感最快的方式。