mcpField
G
graphql

graphql

github.com/thebeardedbearsas开发108114 次安装今天更新
代码仓库

关于 graphql

这是一份 GraphQL 参考技能,涵盖 Federation、Schema 模式、DataLoader 和查询优化,适合设计跨服务 API,或需要性能与查询控制指导的开发者。

主要功能

  1. 01Apollo Federation 服务组合
  2. 02DataLoader 批处理与缓存
  3. 03Relay 分页与错误处理模式
  4. 04持久化查询及查询限制

适用场景

  1. 01通过网关组合 GraphQL 服务
  2. 02减少 N+1 数据库查询
  3. 03设计分页 GraphQL 响应
  4. 04添加查询深度与成本控制

安装

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

$npx skills add https://github.com/thebeardedbearsas/claude-craft --skill graphql

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

详细介绍

GraphQL — Apollo Federation、Schema 设计

支持 Federation、DataLoader 和优化的现代 GraphQL API。

GraphQL 与 REST

GraphQL — 一次定制化查询、无需版本控制、自动内省
REST — 多个端点、过度获取数据、v1/v2/v3

Apollo Federation

# Users service
type User @key(fields: "id") { id: ID!, name: String! }

# Orders service
extend type User @key(fields: "id") {
  id: ID! @external
  orders: [Order!]!
}

Gateway 会自动组合各项服务。

N+1 问题 — DataLoader

// ❌ N+1 queries
User: { orders: (u) => db.orders.findByUserId(u.id) }

// ✅ DataLoader batch
const loader = new DataLoader(async (ids) => {
  const orders = await db.orders.findByUserIds(ids);
  return ids.map(id => orders.filter(o => o.userId === id));
});
User: { orders: (u) => loader.load(u.id) }

模式

分页(Relay)
type UserConnection {
  edges: [{ node: User!, cursor: String! }]!
  pageInfo: { hasNextPage: Boolean!, endCursor: String }!
}
错误处理
type CreateUserPayload {
  user: User
  errors: [{ field: String, message: String! }]
}

优化

DataLoader — 批量处理 + 缓存
持久化查询 — 哈希查找
深度限制 — 防止 DoS
成本分析 — 查询预算


设计请参阅 @api-designer

评论

支持 Markdown