RESTful API Cheatsheet - REST API Design Reference

RESTful API 接口设计必备规范速查表,从 URL 命名到状态码选择全系列整理,设计 Web API 时直接查。

Reference·46 commands·Last updated 2026-07-21
Back to Reference

URL 设计规范 6

/api/v1/users
资源集合(复数名词)
/api/v1/users/123
单个资源(ID 定位)
/api/v1/users/123/orders
子资源嵌套
/api/v1/users?role=admin
查询参数过滤
/api/v1/users?page=2&limit=20
分页参数
/api/v1/users?sort=-created_at
排序(- 表示降序)

HTTP 方法 8

GET /users
获取资源列表(安全、幂等)
GET /users/123
获取单个资源
POST /users
创建资源(非幂等)
PUT /users/123
完整更新资源(幂等)
PATCH /users/123
部分更新资源
DELETE /users/123
删除资源(幂等)
HEAD /users/123
只获取响应头,不返回 body
OPTIONS /users
查询支持的 HTTP 方法(CORS 预检)

常用状态码 12

200 OK
请求成功
201 Created
资源创建成功
204 No Content
成功但无返回内容(如 DELETE)
301 Moved Permanently
资源永久重定向
400 Bad Request
请求参数错误或格式不合法
401 Unauthorized
未认证(缺少或无效凭证)
403 Forbidden
已认证但无权限访问
404 Not Found
资源不存在
409 Conflict
资源冲突(如重复创建)
422 Unprocessable Entity
语义错误(字段校验失败)
429 Too Many Requests
请求频率超限(触发限流)
500 Internal Server Error
服务器内部错误

请求头 5

Content-Type: application/json
请求体为 JSON 格式
Accept: application/json
期望响应为 JSON
Authorization: Bearer <token>
Bearer Token 认证头
If-None-Match: "etag"
条件请求(ETag 缓存校验)
X-API-Key: abc123
自定义 API Key 认证

响应格式 5

{ "data": [...], "meta": {...} }
标准列表响应结构
{ "data": {...} }
单资源响应结构
{ "error": { "code": "...", "message": "..." } }
错误响应结构
{ "page": 2, "limit": 20, "total": 100 }
分页元信息
Link: <url>; rel="next"
分页链接头(RFC 5988)

认证方式 5

Authorization: Basic base64(user:pass)
HTTP 基本认证
Authorization: Bearer <jwt>
Bearer Token / JWT 认证
X-API-Key: <key>
API Key 认证(自定义头)
?api_key=<key>
API Key 认证(查询参数)
OAuth 2.0
授权码模式(authorization code flow)

最佳实践 5

幂等性设计
GET/PUT/DELETE 应幂等,多次调用结果一致
POST 创建返回 201 + Location
创建成功返回 201 和资源 URI
批量操作: POST /users/batch
批量创建/更新使用子资源端点
RateLimit-Limit / Retry-After
限流响应头告知客户端配额
HATEOAS
响应中包含相关资源链接(超媒体驱动)

💡 Tips

  • URL 使用名词复数表示资源集合,如 /users 而不是 /user。
  • GET 请求应该是安全的,不改变服务器状态;PUT/DELETE 应是幂等的。
  • PUT 是完整替换,PATCH 是部分更新,根据场景选择。
  • API 版本放在 URL 路径中(/v1/)或请求头中(Accept-Version)。
  • 错误响应应包含错误码、消息和可选的详情字段,方便客户端处理。