GraphQL 设计指南
将以下提示词粘贴到你的 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。