返回知识库

API 设计规范

Engineeringv10293 次阅读已发布

API 设计知识库

一、API 设计核心原则

原则说明示例
简单易用接口语义清晰,符合直觉使用标准 HTTP 方法,避免自定义动词
一致性所有接口遵循相同的设计规范统一命名风格(如驼峰或下划线)、统一错误格式
无状态每个请求包含所有必要信息,不依赖服务端存储上下文使用 Token 认证,不在服务端保存 Session
向后兼容旧版客户端不因接口更新而失效使用版本控制、只增不删、可选字段设计
可发现性接口结构让开发者容易理解和使用合理使用 HTTP 状态码,提供 OpenAPI 文档

二、RESTful API 设计规范

1. 资源命名
规范正确示例错误示例
使用名词而非动词POST /usersPOST /createUser
使用复数形式GET /users/123GET /user/123
使用小写字母 + 连字符/user-profiles/userProfiles 或 /user_profiles
使用嵌套表示关联GET /users/123/ordersGET /orders?userId=123(简单场景下可接受)
2. HTTP 方法使用标准
方法含义幂等性安全性示例
GET获取资源是是GET /users/123
POST创建资源否否POST /users
PUT完整更新资源(需提供全部字段)是否PUT /users/123
PATCH部分更新资源否否PATCH /users/123
DELETE删除资源是否DELETE /users/123

幂等性说明: 多次执行相同请求,结果一致。GET、PUT、DELETE 是幂等的;POST、PATCH 通常不是。

3. HTTP 状态码使用规范
分类状态码含义使用场景
成功(2xx)200 OK请求成功GET、PUT、PATCH、DELETE 成功
201 Created资源创建成功POST 成功后,响应头带 Location
204 No Content请求成功但无返回体DELETE 成功
客户端错误(4xx)400 Bad Request参数错误、格式错误JSON 解析失败、必填字段缺失
401 Unauthorized未认证缺少 Token 或 Token 无效
403 Forbidden无权限Token 有效但权限不足
404 Not Found资源不存在请求的 URL 或资源 ID 不存在
409 Conflict资源冲突创建时资源已存在
422 Unprocessable Entity语义错误业务逻辑校验失败
429 Too Many Requests请求过多触发限流
服务端错误(5xx)500 Internal Server Error服务器内部错误代码异常、数据库连接失败
502 Bad Gateway网关错误上游服务不可用
503 Service Unavailable服务不可用服务过载或维护中
4. 响应结构设计
成功响应格式
{
  "code": 200,
  "message": "success",
  "data": {
    "id": 123,
    "username": "john_doe"
  }
}