1. 资源命名规范
1.1 命名原则
使用名词复数形式表示资源集合,例如
/users、/products资源名称采用小写字母,单词间使用连字符分隔,例如
/user-profiles避免使用动词,资源操作通过 HTTP 方法表达
保持命名简洁且具有描述性
1.2 层级关系
使用嵌套资源表示层级关系,例如
/users/{userId}/orders嵌套层级不宜超过两层,避免过度复杂的 URL 结构
对于多对多关系,使用专门的资源端点,例如
/users/{userId}/followers
2. HTTP 方法使用规范
2.1 方法语义
GET:安全且幂等的读取操作,用于获取资源或资源集合
POST:非幂等的创建操作,用于新建资源
PUT:幂等的完整更新操作,用于替换整个资源
PATCH:非幂等的部分更新操作,用于修改资源的部分属性
DELETE:幂等的删除操作,用于移除资源
2.2 方法选择指南
创建资源时优先使用 POST
更新资源时,完整更新使用 PUT,部分更新使用 PATCH
删除操作必须使用 DELETE 方法
避免使用 GET 方法执行具有副作用的操作
3. 状态码使用规范
3.1 成功状态码
200 OK:通用成功状态,适用于大多数成功响应
201 Created:资源创建成功,应在响应中包含 Location 头指向新资源
202 Accepted:请求已接受但尚未处理完成
204 No Content:请求成功但无返回内容
3.2 客户端错误状态码
400 Bad Request:请求格式错误或参数无效
401 Unauthorized:需要身份验证或认证失败
403 Forbidden:认证成功但无访问权限
404 Not Found:请求资源不存在
405 Method Not Allowed:请求方法不被支持
409 Conflict:请求与当前资源状态冲突
429 Too Many Requests:请求频率超出限制
3.3 服务器错误状态码
500 Internal Server Error:服务器内部错误
502 Bad Gateway:网关或代理服务器错误
503 Service Unavailable:服务暂时不可用
504 Gateway Timeout:网关超时
4. 版本管理策略
4.1 版本控制方式
URI 路径版本控制:
/api/v1/resource请求头版本控制:
Accept: application/vnd.api.v1+json查询参数版本控制:
/api/resource?version=1
4.2 版本演进原则
保持向后兼容性,避免破坏性变更
废弃的 API 应提供足够的迁移时间
新版本应明确标注弃用时间表
5. 查询参数规范
5.1 分页参数
limit:指定返回记录数量offset:指定起始偏移量page:当前页码(可选)per_page:每页记录数(可选)
5.2 排序参数
sort:排序字段,支持多个字段逗号分隔order:排序方向(asc/desc)示例:
sort=name,created_at&order=asc,desc
5.3 过滤参数
使用字段名作为过滤条件
支持范围查询:
price_min,price_max支持包含查询:
tags=tag1,tag2支持搜索查询:
q=keyword
6. 请求和响应格式
6.1 请求格式
使用 JSON 作为主要数据交换格式
设置正确的 Content-Type 头:
application/json请求体应遵循统一的格式规范
6.2 响应格式
成功响应包含数据主体和元数据
错误响应包含错误代码和描述信息
使用一致的日期时间格式(ISO 8601)
7. 错误处理机制
7.1 错误响应结构
{
"error": {
"code": "error_code",
"message": "错误描述",
"details": [
{
"field": "字段名",
"issue": "具体问题"
}
],
"request_id": "请求标识符"
}
}
7.2 错误分类
验证错误:输入数据不符合要求
业务错误:违反业务规则
系统错误:服务器内部问题
权限错误:访问权限不足
8. 安全规范
8.1 身份认证
使用 OAuth 2.0 或 JWT 进行身份验证
支持多种认证方式(Bearer Token、API Key)
认证失败返回 401 状态码
8.2 授权控制
基于角色的访问控制(RBAC)
资源级别的权限验证
操作前进行权限检查
8.3 数据安全
使用 HTTPS 加密传输
敏感数据加密存储
防止 SQL 注入和 XSS 攻击
9. 性能优化
9.1 缓存策略
使用 ETag 进行条件请求
设置适当的 Cache-Control 头
支持客户端缓存验证
9.2 压缩传输
支持 Gzip 压缩
减少不必要的数据传输
使用字段选择减少响应大小
10. 文档和测试
10.1 API 文档
使用 OpenAPI 规范编写文档
提供详细的参数说明和示例
包含错误代码和状态码说明
10.2 测试策略
单元测试覆盖所有端点
集成测试验证业务流程
性能测试确保系统稳定性
11. 监控和日志
11.1 监控指标
请求成功率
响应时间分布
错误率统计
11.2 日志记录
记录请求和响应信息
包含请求标识符用于追踪
保存足够的上下文信息
12. 最佳实践
12.1 设计原则
保持接口简洁一致
遵循 REST 约束条件
提供清晰的错误信息
12.2 演进策略
逐步迭代而非大规模重写
保持向后兼容性
定期审查和优化 API 设计