设计技巧

RESTful API 设计最佳实践

2025-08-10 · 阅读约 10 分钟

← 返回首页

API 是前后端沟通的桥梁,设计良好的 API 能大幅降低沟通成本、减少对接 Bug。本文结合实际项目经验,总结 RESTful API 设计中最常用的规范和最佳实践。

1. URL 设计:用名词,不用动词

RESTful 的核心思想是把一切操作视为对"资源"的操作,因此 URL 应该表示资源(名词),而 HTTP 方法表示动作。

// ❌ 不好的设计
POST /getUserList
POST /createUser
POST /deleteUser/123

// ✅ RESTful 设计
GET    /api/users          # 获取用户列表
POST   /api/users          # 创建用户
GET    /api/users/123      # 获取单个用户
PUT    /api/users/123      # 更新用户
DELETE /api/users/123      # 删除用户

2. HTTP 方法的正确使用

方法语义幂等性示例
GET获取资源GET /api/users
POST创建资源POST /api/users
PUT全量更新PUT /api/users/123
PATCH部分更新PATCH /api/users/123
DELETE删除资源DELETE /api/users/123

3. 统一的响应格式

所有接口返回统一的 JSON 结构,让前端可以用一套逻辑处理所有响应。推荐格式如下:

// 成功响应
{
    "code": 0,
    "message": "success",
    "data": {
        "id": 123,
        "name": "张三",
        "email": "zhangsan@example.com"
    }
}

// 错误响应
{
    "code": 40001,
    "message": "用户名已存在",
    "data": null
}

// 分页响应
{
    "code": 0,
    "message": "success",
    "data": {
        "list": [...],
        "total": 156,
        "page": 1,
        "pageSize": 20
    }
}

4. 合理的 HTTP 状态码

虽然业务状态码放在 body 里,但 HTTP 状态码本身也应该正确使用:

5. 版本控制

API 不可避免会迭代,提前设计版本控制机制能避免很多兼容性问题。常见做法是在 URL 中加入版本号:

/api/v1/users
/api/v2/users

新版本上线时,旧版本至少维护 3-6 个月的过渡期,给调用方足够的迁移时间。

6. 分页、筛选与排序

列表接口几乎都需要分页。推荐使用查询参数:

GET /api/users?page=1&pageSize=20&sort=createdAt:desc&status=active

这样设计的好处是语义清晰,前端容易拼接参数,后端也容易解析。

小结

好的 API 设计就像好的代码一样——自解释、一致、可预期。遵循 RESTful 规范不是为了教条,而是为了让团队协作更高效、让系统更易于维护。在项目初期就约定好 API 设计规范,后续的开发和对接会顺畅很多。