RESTful API 设计规范

RESTful API 设计规范与最佳实践

RESTful API是现代Web应用和微服务架构的主要通信方式。设计良好的API不仅便于前后端协作,还能降低维护成本,提升开发效率。本文介绍RESTful API设计的核心规范和实践要点。

一、REST核心原则

  • 无状态(Stateless):每个请求包含所有必要信息,服务端不保存客户端状态
  • 资源导向:API围绕资源设计,而非操作(名词而非动词)
  • 统一接口:使用标准HTTP方法(GET/POST/PUT/DELETE/PATCH)
  • 分层系统:客户端不需要知道与之通信的是真实服务器还是中间层

二、URL设计规范

# 资源使用名词复数
/users                   # 用户集合
/users/123               # 特定用户
/users/123/orders        # 用户的订单集合
/users/123/orders/456    # 用户的特定订单

# 使用连字符分隔多词(而非下划线)
/product-categories      # 正确
/product_categories      # 避免

# 不要在URL中使用动词
GET /users/123           # 正确(获取用户)
GET /getUser/123         # 错误
POST /users/123/activate # 可接受的例外(非CRUD操作)

# 过滤、排序、分页用查询参数
GET /orders?status=paid&sort=-created_at&page=2&per_page=20

三、HTTP方法使用规范

GET /users              # 获取用户列表(只读,可缓存)
GET /users/123          # 获取单个用户
POST /users             # 创建新用户(不幂等)
PUT /users/123          # 完整更新用户(幂等)
PATCH /users/123        # 部分更新用户(幂等)
DELETE /users/123       # 删除用户(幂等)

四、HTTP状态码规范

# 2xx 成功
200 OK                  # 通用成功,GET/PUT/PATCH
201 Created             # 资源创建成功(POST),Header包含Location
204 No Content          # 操作成功,无响应体(DELETE)

# 4xx 客户端错误
400 Bad Request         # 请求参数错误(格式错误、缺少必填字段)
401 Unauthorized        # 未认证(需要登录)
403 Forbidden           # 已认证但无权限
404 Not Found           # 资源不存在
409 Conflict            # 资源冲突(重复创建)
422 Unprocessable Entity # 参数格式正确但业务逻辑错误
429 Too Many Requests   # 请求频率超限

# 5xx 服务端错误
500 Internal Server Error # 服务端未知错误
503 Service Unavailable   # 服务暂时不可用

五、统一响应格式

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

// 列表响应(带分页信息)
{
    "code": 0,
    "message": "success",
    "data": {
        "items": [...],
        "pagination": {
            "total": 100,
            "page": 1,
            "per_page": 20,
            "total_pages": 5
        }
    }
}

// 错误响应
{
    "code": 40001,
    "message": "Email already registered",
    "errors": {
        "email": ["该邮箱已被注册"]
    }
}

六、版本管理策略

# URL路径版本(最常用)
/v1/users
/v2/users

# Header版本
Accept: application/vnd.myapp.v2+json

# 查询参数版本
/users?version=2

七、认证与安全

  • 使用HTTPS加密所有API通信
  • 采用JWT或OAuth2.0进行认证授权
  • 实现请求频率限制(Rate Limiting)防止滥用
  • 敏感操作使用HTTPS证书双向认证
  • 不在URL中传递敏感信息(密码、Token)
  • 实现CORS策略,控制跨域访问权限

八、API文档

好的API必须有完整文档。推荐使用OpenAPI(Swagger)规范编写API文档:自动生成交互式文档界面;支持代码生成(客户端SDK、Mock服务器);与CI/CD集成,API变更时自动更新文档;使用Postman Collection分享测试用例。

九、总结

良好的API设计是团队协作的基础。遵循RESTful规范、使用合理的HTTP方法和状态码、提供统一的响应格式,可以让前后端协作更顺畅,降低联调成本。API一旦发布就要保证向后兼容,版本管理要从一开始就规划好。