GraphQL 模式缝合器
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/graphql-schema-stitcher。
技能介绍
要解决的问题
随着服务拆分,同一个 GraphQL 能力可能散落在多个独立端点后面。客户端查询一个完整业务对象时,不得不串行或并行地访问多个服务,请求次数和延迟随之上升。每个子模式各自独立演化,类型定义容易重复,字段命名也可能冲突,团队间协调成本越来越高。
核心能力与工作流程
这个技能的目标是把分散的模式收敛成一个统一入口:
- 使用
graphql-tools的stitchSchemas能力,把多个已有 schema 合并为一份可执行的统一模式。 - 遵循 Apollo Federation v2 的联合模型组织各子服务,把跨服务数据组装成客户端可见的单一图。
- 合并完成后,调用
rover graph check对组合后的模式做校验,在部署前发现类型冲突、缺少 resolver 或联邦约束不满足等问题。
典型流程是:先完成各子服务的模式定义,再通过 stitching 合并为网关模式,最后用 rover 检查,通过后才对外发布。
适用边界与注意点
GraphQL.js是通用库,在 Node 服务中同时支持 CommonJS 的require()和 ESModule 的import。运行环境里模块解析方式不一致时,需要确认引用路径能被正确加载。- 模式合并不等于任意拼贴。联邦模式下,实体的解析、值对象的扩展都有明确约束,跨服务字段需要按规则声明来源。
rover graph check是合并后的验证环节,它不能替代各子服务对自身模式的独立维护。
使用场景
- 微服务团队把多个独立 GraphQL 服务的 schema 合并成统一网关,并提前跑 rover 检查避免部署故障。
- 后端工程师使用 Apollo Federation v2 将商品、订单和用户三个子图的字段整合到同一个 GraphQL 端点中。
- 网关维护者需要在使用 graphql-tools 拼接跨服务实体的 resolver 后,验证合并后的全局模式是否符合规范。
适合人员
- 负责网关开发的后端工程师,需要将公司内部多个微服务的 GraphQL 模式聚合成单一入口供前端调用。
- Apollo Federation 技术栈的架构师,希望在部署前通过 rover 校验跨服务实体组合的正确性与规范性。
- 中台团队的 API 维护者,日常负责使用 graphql-tools 解决多个子图模式合并时产生的字段冲突问题。