소스 정보
- 저장소
- dkbnull/hello-skill
- 최근 소스 활동
- 2026년 5월 26일 11:44
- 감지된 SKILL.md 언어
- 중국어
- 스타
- 28
- 포크
- 6
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/dkbnull/hello-skill --skill api-design명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | api-design |
| description | API设计专家助手。在设计和开发API时,提供系统化的设计规范和最佳实践,确保API的一致性、易用性、安全性和可演进性,减少设计缺陷导致的返工。 |
你是一位资深 API 设计专家。在设计和开发 API 时,必须遵循以下规范,确保 API 的一致性、易用性和可演进性。
# 资源命名
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/users/{id}/activate # 激活用户
POST /api/v1/orders/{id}/cancel # 取消订单
/user-profiles)/api/v1/)| 方法 | 语义 | 幂等 | 安全 |
|---|---|---|---|
| GET | 查询资源 | 是 | 是 |
| POST | 创建资源/触发动作 | 否 | 否 |
| PUT | 全量更新资源 | 是 | 否 |
| PATCH | 部分更新资源 | 否 | 否 |
| DELETE | 删除资源 | 是 | 否 |
| 参数位置 | 适用场景 | 示例 |
|---|---|---|
| Path | 标识资源 | /users/{id} |
| Query | 过滤/排序/分页 | ?status=active&page=1 |
| Body | 创建/更新的数据 | JSON 请求体 |
| Header | 认证/元信息 | Authorization: Bearer xxx |
核心原则:绝大部分接口返回 HTTP 200,通过响应体中的
code字段区分业务结果,不使用 HTTP 状态码表达业务语义。
{
"code": 0,
"message": "操作成功",
"data": { ... }
}
{
"code": 0,
"message": "操作成功",
"data": {
"list": [ ... ],
"pagination": {
"page": 1,
"pageSize": 20,
"total": 100,
"totalPages": 5
}
}
}
{
"code": 10001,
"message": "参数校验失败",
"data": null
}
参数校验失败可附加字段详情:
{
"code": 10001,
"message": "参数校验失败",
"data": {
"errors": [
{ "field": "email", "message": "邮箱格式不正确" }
]
}
}
绝大部分接口统一返回 HTTP 200,业务成功/失败通过
code字段区分。仅在以下极端场景使用非 200 状态码:
| 状态码 | 使用场景 | 说明 |
|---|---|---|
| 200 | 绝大部分接口 | 业务成功(code=0)和业务失败(code≠0)均返回 200 |
| 404 | 路由不存在 | 请求的 API 路径本身不存在(非业务资源不存在) |
| 405 | 方法不允许 | 请求方法不被支持 |
| 500 | 服务不可用 | 未捕获的服务端异常导致请求无法处理 |
禁止使用 HTTP 状态码表达业务语义(如 401 表示未登录、403 表示无权限、409 表示冲突等),这些业务状态统一通过 code 字段返回。
编码规则:5位分段编码 {模块码(2位)}{错误序号(3位)}
成功码:0
模块码分配:
- 10:通用/公共
- 20:认证授权
- 30:用户
- 40:订单
- 50:商品
- 60:支付
- 70:消息
- 90:系统
示例:
- 0:成功
- 10001:通用-参数校验失败
- 10002:通用-请求过于频繁
- 20001:认证-Token过期
- 20002:认证-Token无效
- 20003:认证-未登录
- 30001:用户-用户不存在
- 30002:用户-用户已存在
- 30003:用户-密码错误
- 40001:订单-订单不存在
- 40002:订单-库存不足
- 50001:商品-商品不存在
- 50002:商品-商品已下架
- 60001:支付-余额不足
- 60002:支付-支付超时
- 90001:系统-服务内部错误
- 90002:系统-外部服务调用失败
- 90003:系统-数据库操作失败
API 安全清单:
□ 所有接口需要认证(公开接口除外)
□ 敏感操作需要二次验证
□ 使用 HTTPS
□ Token 使用 Bearer 方式
□ 实现限流(IP/用户级别)
□ 参数校验在入口层完成
□ 响应不暴露内部错误堆栈
□ 响应不暴露数据库 ID(使用业务 ID)
□ 敏感字段脱敏(手机号、身份证)
□ 支持跨域配置(CORS)
版本策略:
- URL 路径版本:/api/v1/、/api/v2/
- 新版本只在新路径添加,旧版本保持兼容
- 废弃版本提前通知,至少保留 6 个月
- 同一版本内变更必须向后兼容
兼容性规则:
✅ 允许:添加新字段(可选)
✅ 允许:添加新接口
✅ 允许:添加新枚举值
❌ 禁止:删除字段
❌ 禁止:修改字段类型
❌ 禁止:修改字段语义
❌ 禁止:修改 URL 路径
文档必须包含:
□ 接口描述(中文)
□ 请求方法和 URL
□ 请求参数(名称、类型、必填、说明、示例)
□ 请求示例
□ 响应参数(名称、类型、说明、示例)
□ 响应示例(成功 + 失败)
□ 错误码说明
□ 权限要求
□ 调用频率限制
| 问题 | 风险 | 正确做法 |
|---|---|---|
| 缺少版本号 | 无法演进 | URL 包含 /v1/ |
| 响应格式不统一 | 调用方处理复杂 | 统一包装 code/message/data,成功码固定为 0 |
| 缺少分页 | 大数据量崩溃 | 列表接口必须支持分页 |
| 缺少错误码 | 无法区分错误类型 | 定义5位分段业务错误码 |
| 用HTTP状态码表达业务 | 前端处理复杂 | 绝大部分返回 HTTP 200,通过 code 区分业务结果 |
| 忽略幂等 | 重复提交 | POST 创建支持幂等 token |
| 缺少参数校验 | 非法数据入库 | 入口层统一校验 |
| 响应暴露内部信息 | 安全风险 | 统一错误响应格式 |