mcpField
A
api-designer

api-designer

github.com/zhaono1开发85701 次安装10 周前更新
代码仓库

关于 api-designer

api-designer 是用于规划、审查和改进 REST 与 GraphQL API 的技能,涵盖设计规范,并提供生成和验证 API 设计文档的脚本。

主要功能

  1. 01REST 资源与 HTTP 方法规范
  2. 02GraphQL Schema 设计实践
  3. 03版本、认证与速率限制指南
  4. 04API 文档要求
  5. 05脚手架生成与验证脚本

适用场景

  1. 01设计新的 REST 或 GraphQL API
  2. 02审查现有 API 设计
  3. 03生成 API 设计文档
  4. 04使用脚本检查设计文档

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/zhaono1/agent-playbook --skill api-designer

安装后在 Claude Code 中输入/api-designer确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
references/
graphql-patterns.md
rest-patterns.md
scripts/
generate_api.py
validate_api.py

详细介绍

API 设计师

擅长设计健壮、可扩展且易于维护的 REST 和 GraphQL API。

此技能的激活时机

在以下情况下激活:

  • 设计新 API
  • 审查 API 设计
  • 改进现有 API
  • 创建 API 规范

REST API 设计原则

1. 面向资源的设计

推荐:

GET    /users          # List users
POST   /users          # Create user
GET    /users/{id}     # Get specific user
PATCH  /users/{id}     # Update user
DELETE /users/{id}     # Delete user

避免:

POST   /getUsers       # Should be GET
POST   /users/create  # Redundant
GET    /users/get/{id} # Redundant
2. HTTP 方法
方法安全幂等用途
GET✓✓读取资源
POST✗✗创建资源
PUT✗✓替换资源
PATCH✗✗更新资源
DELETE✗✓删除资源
3. 状态码
代码含义用法
200成功GET、PATCH、DELETE 请求成功
201已创建POST 请求成功
204无内容DELETE 请求成功且无响应正文
400错误请求输入无效
401未授权缺少身份验证信息或身份验证信息无效
403禁止访问已通过身份验证,但未获授权
404未找到资源不存在
409冲突资源已存在
422无法处理语法有效,但存在语义错误
429请求过多超出速率限制
500服务器内部错误服务器错误
4. 命名约定
  • URL:kebab-case(/user-preferences)
  • JSON:camelCase({"userId": "123"})
  • 查询参数:snake_case 或 camelCase(?page_size=10)
5. 分页
GET /users?page=1&page_size=20

Response:
{
  "data": [...],
  "pagination": {
    "page": 1,
    "page_size": 20,
    "total": 100,
    "total_pages": 5
  }
}
6. 筛选与排序
GET /users?status=active&sort=-created_at,name

# -created_at = descending
# name = ascending

GraphQL API 设计

架构设计
type Query {
  user(id: ID!): User
  users(limit: Int, offset: Int): UserConnection!
}

type Mutation {
  createUser(input: CreateUserInput!): CreateUserPayload!
  updateUser(id: ID!, input: UpdateUserInput!): UpdateUserPayload!
}

type User {
  id: ID!
  email: String!
  profile: Profile
  posts(first: Int, after: String): PostConnection!
}

type UserConnection {
  edges: [UserEdge!]!
  pageInfo: PageInfo!
}

type UserEdge {
  node: User!
  cursor: String!
}

type PageInfo {
  hasNextPage: Boolean!
  hasPreviousPage: Boolean!
  startCursor: String
  endCursor: String
}
最佳实践
  • 可空性:默认使用非空类型,仅在适当时使用可空类型
  • 连接:列表使用基于游标的分页
  • 负载:使用变更负载,以便统一处理错误
  • 描述:为所有类型和字段编写文档

API 版本控制

方式

URL 版本控制(推荐):

/api/v1/users
/api/v2/users

标头版本控制:

GET /users
Accept: application/vnd.myapi.v2+json
版本控制指南
  • 从 v1 开始
  • 尽可能保持向后兼容
  • 提前通知用户弃用旧版本
  • 记录会造成不兼容的变更

身份验证与授权

身份验证方式
  1. JWT Bearer Token
Authorization: Bearer <token>
  1. API Key
X-API-Key: <key>
  1. OAuth 2.0
Authorization: Bearer <access_token>
授权
  • 使用角色/权限
  • 记录各端点所需的权限
  • 授权失败时返回 403

速率限制

HTTP/1.1 200 OK
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1631234567

建议的限制:

  • 公共 API:每小时 100-1000 次请求
  • 已通过身份验证的 API:每小时 1000-10000 次请求
  • Webhook:每分钟 10-100 次请求

文档要求

  • 记录所有端点
  • 请求/响应示例
  • 身份验证要求
  • 错误响应格式
  • 速率限制
  • SDK 示例(如有)

脚本

生成 API 脚手架:

python3 scripts/generate_api.py --name <resource-name> --output api-design.md

验证 API 设计:

python3 scripts/validate_api.py --input api-design.md

参考资料

评论

支持 Markdown