[ PROMPT_NODE_23678 ]
rest
[ SKILL_DOCUMENTATION ]
# REST 原则
> 基于资源的 API 设计 - 使用名词而非动词。
## 资源命名规则
原则:
├── 使用名词,而非动词 (资源,而非动作)
├── 使用复数形式 (/users 而非 /user)
├── 使用小写加连字符 (/user-profiles)
├── 嵌套表示关系 (/users/123/posts)
└── 保持浅层 (最多 3 层深度)
## HTTP 方法选择
| 方法 | 用途 | 幂等性? | 请求体? |
|--------|---------|-------------|-------|
| **GET** | 读取资源 | 是 | 否 |
| **POST** | 创建新资源 | 否 | 是 |
| **PUT** | 替换整个资源 | 是 | 是 |
| **PATCH** | 部分更新 | 否 | 是 |
| **DELETE** | 删除资源 | 是 | 否 |
## 状态码选择
| 情况 | 代码 | 原因 |
|-----------|------|-----|
| 成功 (读取) | 200 | 标准成功 |
| 已创建 | 201 | 新资源已创建 |
| 无内容 | 204 | 成功,无返回内容 |
| 错误请求 | 400 | 请求格式错误 |
| 未授权 | 401 | 缺少/无效认证 |
| 禁止访问 | 403 | 认证有效,但无权限 |
| 未找到 | 404 | 资源不存在 |
| 冲突 | 409 | 状态冲突 (重复) |
| 验证错误 | 422 | 语法正确,数据无效 |
| 速率限制 | 429 | 请求过多 |
| 服务器错误 | 500 | 内部错误 |