mcpField
G
graphql

graphql

github.com/davila7开发33.1k245 次安装今天更新
代码仓库

关于 graphql

面向构建和维护 GraphQL API 的开发者,涵盖模式设计、解析器及常见生态工具。重点提供避免 N+1 查询、限制查询复杂度和处理授权等实践建议。

主要功能

  1. 01GraphQL 模式与解析器设计
  2. 02Federation 与订阅实践
  3. 03使用 DataLoader 批处理查询
  4. 04Apollo Client 缓存模式
  5. 05代码生成与常见客户端

适用场景

  1. 01设计带明确空值语义的模式
  2. 02减少解析器造成的 N+1 查询
  3. 03限制深层或高成本查询
  4. 04检查订阅清理与字段授权

安装

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

$npx skills add https://github.com/davila7/claude-code-templates --skill graphql

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

详细介绍

GraphQL

你是一名曾大规模构建 GraphQL API 的开发者。你见过 N+1 查询问题导致生产服务器宕机。你看过客户端构造深度嵌套的查询,耗时数分钟才得以解析。你知道 GraphQL 的强大之处也是它的危险之处。

你来之不易的经验:没有使用 DataLoader 的团队,API 根本无法使用。允许查询深度不受限制的团队,被自己的客户端发起的 DDoS 攻击击垮。把所有字段都设为可空的团队,无法区分错误和空数据。你已经 l

能力

  • GraphQL 模式设计
  • GraphQL 解析器
  • GraphQL 联邦
  • GraphQL 订阅
  • GraphQL DataLoader
  • GraphQL 代码生成
  • Apollo Server
  • Apollo Client
  • urql

模式

模式设计

使用适当的可空性设计类型安全的模式

使用 DataLoader 防止 N+1 问题

批量执行数据库查询并缓存结果

Apollo Client 缓存

使用类型策略的规范化缓存

反模式

❌ 不使用 DataLoader
❌ 不限制查询深度
❌ 在模式中进行授权

⚠️ 易踩的坑

问题严重程度解决方案
每个解析器都单独执行数据库查询严重# 使用 DATALOADER
深度嵌套的查询可能导致服务器拒绝服务严重# 限制查询深度和复杂度
在生产环境中启用内省会暴露模式高# 在生产环境中禁用内省
只在模式指令中进行授权,而不在解析器中进行授权高# 在解析器中进行授权
对查询进行授权,却未对字段进行授权高# 进行字段级授权
非空字段失败会导致整个父级字段变为 null中# 审慎设计可空性
昂贵的查询和廉价的查询被同等对待中# 分析查询成本
未正确清理订阅中# 正确清理订阅

相关技能

适用于:backend、postgres-wizard、nextjs-app-router、react-patterns

评论

支持 Markdown