无需登录 数据私有 本地保存

GraphQL Schema 差异对比 - 检测破坏性变更

12
0
0
0
GraphQL Schema 差异对比 检测破坏性变更

粘贴旧版和新版 GraphQL SDL Schema,自动检测破坏性变更、新增内容及安全性评估。

旧版 当前 Schema
新版 新 Schema

输入两个版本的 Schema 后点击对比

支持 type、enum、input、interface、union 等类型定义
常见问题 & 知识库

破坏性变更(Breaking Change)是指对 GraphQL Schema 的修改,会导致现有客户端无法正常工作。例如:移除字段、修改字段类型使其更严格(可空→非空)、移除枚举值、新增必填参数等。检测破坏性变更是 API 版本管理中的关键环节。

常见破坏性变更包括:① 移除类型、字段、枚举值或接口实现;② 将字段类型从可空改为非空(StringString!);③ 移除联合类型成员;④ 在 input 类型中新增必填字段或移除字段;⑤ 修改参数使其更严格(如新增必填参数)。这些变更会导致旧客户端查询失败或返回错误。

安全变更包括:① 新增类型、字段、枚举值;② 新增可选参数(带默认值);③ 将字段类型从非空改为可空(String!String);④ 新增接口实现或联合类型成员;⑤ 新增 input 字段(只要是可选的)。这些变更不会破坏现有客户端的查询。

最佳实践:① 只新增不删除——添加新字段和新类型而非修改现有定义;② 使用 @deprecated 指令标记废弃字段,给客户端缓冲期;③ 在 CI/CD 中集成 Schema 差异检测工具(如 GraphQL Inspector);④ 版本化重大变更,通过不同的端点或标头管理;⑤ 与团队充分沟通变更计划。

本工具支持解析标准的 GraphQL SDL(Schema Definition Language),包括:type(含 implements)、enuminputinterfaceunionscalar 等定义,以及字段类型修饰符(! 非空、[] 列表)和参数定义。暂不支持自定义指令和复杂描述字符串的深度解析。