RESTfulAPI设计 rest-api-design

该技能用于设计符合RESTful原则的API,包括资源命名规范、HTTP方法使用、状态码定义和响应格式设计,以提升API的可读性、可维护性和开发者友好性。关键词:RESTful API,API设计,后端开发,资源命名,HTTP方法,状态码,开发者体验。

架构设计 0 次安装 0 次浏览 更新于 3/7/2026

名称:rest-api-design 描述:设计具有适当资源命名、HTTP方法、状态码和响应格式的RESTful API。在构建新API、建立API约定或设计开发者友好界面时使用。

REST API 设计

设计具有适当约定和开发者体验的RESTful API。

资源命名

# 好 - 名词,复数,层次化
GET    /api/users
GET    /api/users/123
GET    /api/users/123/orders
POST   /api/users
PATCH  /api/users/123
DELETE /api/users/123

# 坏 - 动词,URL中的动作
GET    /api/getUsers
POST   /api/createUser
POST   /api/users/123/delete

HTTP 方法

方法 目的 幂等性
GET 读取资源
POST 创建资源
PUT 替换资源
PATCH 部分更新
DELETE 删除资源

状态码

代码 含义 用途
200 OK 成功的GET、PATCH
201 Created 成功的POST
204 No Content 成功的DELETE
400 Bad Request 验证错误
401 Unauthorized 缺少认证
403 Forbidden 权限不足
404 Not Found 资源不存在
429 Too Many Requests 速率限制

响应格式

{
  "data": {
    "id": "123",
    "type": "user",
    "attributes": {
      "name": "John",
      "email": "john@example.com"
    }
  },
  "meta": {
    "requestId": "req_abc123"
  }
}

集合响应

{
  "data": [...],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 150,
    "totalPages": 8
  },
  "links": {
    "self": "/api/users?page=1",
    "next": "/api/users?page=2"
  }
}

查询参数

GET /api/products?category=electronics    # 过滤
GET /api/products?sort=-price,name        # 排序
GET /api/products?page=2&limit=20         # 分页
GET /api/products?fields=id,name,price    # 字段选择

最佳实践

  • 使用名词表示资源,而不是动词
  • 通过URL路径版本化API (/api/v1/)
  • 返回适当的状态码
  • 为集合包括分页
  • 使用OpenAPI/Swagger进行文档化