Agent Skills
返回列表
💻

GraphQL 设计指南

开发编程 更新于 2026.08.30

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/graphql-design-sh-4mq9ya。

技能介绍

要解决的问题

GraphQL API 如果按数据库表直接建模,常见会踩到几个坑:嵌套字段触发 N+1 查询,大列表用 offset 分页 导致深页性能差,mutation 只返回数据而没有统一错误结构,schema 文件膨胀成单体。这个技能把这些问题整理成可执行的设计约束,适合在新增接口、重构 resolver 或评审 schema 前对照使用。

工作方式

核心是围绕 schema design、resolvers、subscriptions 给出一套规范。列表字段建议使用 Relay-style connections 做 cursor pagination;批量实体查询建议使用 DataLoader,并且每个请求创建新的实例,避免跨用户缓存污染;mutation 返回 payload types,同时包含 result 与 errors,入参使用 Input 类型。它还强调把 schema 拆成 domain-specific modules,并配置 query depth/complexity limits,减少无限查询风险。

适用边界

资料更像设计与评审清单,适合 API 设计、代码评审、新人规范,尤其是团队需要统一 GraphQL 规则时。它不替代权限模型、缓存策略、网关限流等运行时设计。若系统已有复杂多租户或联邦 schema,应结合具体框架实现验证。

使用场景

  • 新建 GraphQL 列表接口时,按 Relay 规范定义 connections 与 cursor pagination。
  • 评审 resolver 代码时,检查批量实体查询是否使用 DataLoader 防止 N+1 查询。
  • 重构 mutation 返回结构时,统一返回包含 result 与 errors 的 payload 类型。
  • 上线前核对订阅主题是否过滤,避免广播给所有客户端。

适合人员

  • 负责后端 API 设计的工程师,需要统一 GraphQL schema 与分页规范。
  • 做代码评审的 Tech Lead,需要核对 resolver 的 DataLoader 与错误负载。
  • 维护 GraphQL 服务的开发者,需要消除 N+1 查询与无限复杂度风险。
  • 搭建订阅式接口的后端工程师,需要检查 topic 过滤和模块化 schema。