用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/gugug168/claudecode-tutorial --skill api-design命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | api-design |
| description | REST API 设计模式,包括资源命名、状态码、分页、过滤、错误响应、版本控制和生产 API 的速率限制。 |
设计一致、开发者友好的 REST API 的约定和最佳实践。
# 资源使用名词、复数、小写、kebab-case
GET /api/v1/users
GET /api/v1/users/:id
POST /api/v1/users
PUT /api/v1/users/:id
PATCH /api/v1/users/:id
DELETE /api/v1/users/:id
# 子资源用于表达关系
GET /api/v1/users/:id/orders
POST /api/v1/users/:id/orders
# 不映射到 CRUD 的操作(谨慎使用动词)
POST /api/v1/orders/:id/cancel
POST /api/v1/auth/login
POST /api/v1/auth/refresh
# 好的写法
/api/v1/team-members # 多词资源使用 kebab-case
/api/v1/orders?status=active # 过滤使用查询参数
/api/v1/users/123/orders # 所有权使用嵌套资源
# 不好的写法
/api/v1/getUsers # URL 中有动词
/api/v1/user # 单数(使用复数)
/api/v1/team_members # URL 中使用 snake_case
/api/v1/users/123/getOrders # 嵌套资源中有动词
| 方法 | 幂等 | 安全 | 用途 |
|---|---|---|---|
| GET | 是 | 是 | 检索资源 |
| POST | 否 | 否 | 创建资源,触发操作 |
| PUT | 是 | 否 | 完整替换资源 |
| PATCH | 否* | 否 | 部分更新资源 |
| DELETE | 是 | 否 | 删除资源 |
# 成功
200 OK — GET, PUT, PATCH(有响应体)
201 Created — POST(包含 Location 头)
204 No Content — DELETE, PUT(无响应体)
# 客户端错误
400 Bad Request — 验证失败,JSON 格式错误
401 Unauthorized — 缺少或无效的认证
403 Forbidden — 已认证但未授权
404 Not Found — 资源不存在
409 Conflict — 重复条目,状态冲突
422 Unprocessable Entity — 语义无效(有效的 JSON,错误的数据)
429 Too Many Requests — 超过速率限制
# 服务器错误
500 Internal Server Error — 意外失败(永远不要暴露详情)
502 Bad Gateway — 上游服务失败
503 Service Unavailable — 临时过载,包含 Retry-After
{
"data": {
"id": "abc-123",
"email": "alice@example.com",
"name": "Alice",
"created_at": "2025-01-15T10:30:00Z"
}
}
{
"data": [
{ "id": "abc-123", "name": "Alice" },
{ "id": "def-456", "name": "Bob" }
],
"meta": {
"total": 142,
"page": 1,
"per_page": 20,
"total_pages": 8
},
"links": {
"self": "/api/v1/users?page=1&per_page=20",
"next": "/api/v1/users?page=2&per_page=20",
"last": "/api/v1/users?page=8&per_page=20"
{
"error": {
"code": "validation_error",
"message": "Request validation failed",
"details": [
{
"field": "email",
"message": "Must be a valid email address",
"code": "invalid_format"
}
]
}
}
GET /api/v1/users?page=2&per_page=20
# 实现
SELECT * FROM users
ORDER BY created_at DESC
LIMIT 20 OFFSET 20;
优点:易于实现,支持"跳到第 N 页" 缺点:大偏移量时慢(OFFSET 100000),并发插入时不一致
GET /api/v1/users?cursor=eyJpZCI6MTIzfQ&limit=20
# 实现
SELECT * FROM users
WHERE id > :cursor_id
ORDER BY id ASC
LIMIT 21; -- 多获取一个以确定 has_next
优点:无论位置如何性能一致,并发插入时稳定 缺点:无法跳到任意页面,游标是不透明的
发布新端点前: