GraphQL 文档校验
用本地 SDL 或 introspection JSON 校验完整 GraphQL 文档,下载全部静态诊断和字节不变的原件。
- 1添加输入
- 2调整设置
- 3获取结果
工具输入和文件在当前浏览器处理,不会上传。
开始之前
使用已有 schema 检查所有 operation 和 fragment,查看源位置,并把两份原件与完整校验报告一起保存。
如何使用
- 把完整 GraphQL 操作文档粘贴到第一个文本框。
- 选择 schema 格式,粘贴本地 SDL、introspection JSON,或选择一个 schema 文件。
- 运行静态校验,查看 schemaValid、documentValid 及每条诊断的位置。
- 下载两份完整原件和 validation-report.json,再到目标 API 环境验证实际执行。
支持范围与限制
粘贴完整操作文档,UTF-8 最多 1 MiB;粘贴 schema 最多 2 MiB。也可选择一个最多 2 MiB 的 schema 文件:只替代第二个 schema 文本框,保留第一个操作文档。明确选择 SDL 或 introspection 格式。原始文件名标签最多 512 个 UTF-8 字节。
使用 GraphQL.js 17.0.2 的标准静态规则,一起检查全部 operation 和 fragment;不按 operationName 筛选,不提取 React/JavaScript,不请求 endpoint,不运行自定义规则、resolver 或 scalar 强制转换。通过静态校验不代表查询能够执行或响应数据有效。
Schema 语法、结构或类型错误以及文档语法、语义错误都交付完整诊断报告。Schema 出错时 documentValid 为 null。行和列从 1 开始,列按 UTF-16 单元计数,CRLF 算一个换行;缺少原件坐标的 introspection 结构错误不编造位置。
文件必须可严格解码为 UTF-8,Unicode 必须成对。接受一个开头 BOM,原始字节与 SHA256 保留它。Introspection 必须是严格 JSON;解码后的重复键、同时出现 __schema 和 data.__schema、或包含 errors 成员会产生 schema 诊断。转义后出现孤立代理字符则原子拒绝。
Introspection 元数据数字必须是有限 IEEE 754 值,整数值必须在 ±9,007,199,254,740,991 以内。类型、字段、参数、枚举值及 directive 数组中的同名条目不会被覆盖。额外 envelope 元数据不参与语义校验,报告列出其键名,原件保持不变。
SDL 最多 100,000 个语法 token 和 100,000 个 AST 节点;操作文档各最多 50,000 个。花括号、中括号和圆括号嵌套最多 64 层,无环 fragment 引用链最多 64 个定义。Token 不包括注释、逗号和空白;AST 包括 Document 与 Name 节点,不计算位置链接。
Introspection JSON 最多 128 层容器和 100,000 个树节点,包括属性节点和键节点。可达非 __ 命名类型最多 2,000 个,包括构建器加入的标量。嵌入的 defaultValue 按 GraphQL const 语法解析,累计共用 schema token/AST 上限与 64 层嵌套上限。
最多交付 1,000 条完整诊断,完整报告 UTF-8 最多 1 MiB。多出一条诊断或一个字节都会拒绝,不发布截断报告;两份独立原件合计最多 3 MiB。独立 Worker 自动期限为 10 秒;取消、超时、容量或编码拒绝都没有部分产物。
屏幕最多预览报告的 4,000 个 Unicode 码点,复制和下载保留完整报告。GraphQL Float 字面量 1e400 和任意自定义 scalar 字面量可能通过标准静态规则;本工具不做运行时数字或自定义标量强制转换。输入只在本浏览器处理。
操作示例
示例输入
query Find{x}示例参数
schemaFormat=sdl;schema:type Query{x:Int}示例输出
schemaValid=true;documentValid=true;diagnostics=0;executed=false
出现问题时
按诊断修正 schema 或文档。容量或超时拒绝时,缩小输入后重跑。取消会保留原输入;重新运行使用新 Worker,只有完整报告才会发布。
常见问题
通过就表示 mutation 能成功吗?
表示完整文档通过了此本地 schema 与固定版本的标准静态规则。身份验证、resolver 行为、变量值、自定义标量、服务器扩展和响应有效性仍需在目标 API 环境单独检查。
为什么 documentValid 为 null?
Schema 自身未通过语法、结构或类型检查,因此没有对文档运行该 schema 的语义校验。下载完整 schema 诊断、修好 schema 后再检查文档。
选中的 schema 文件替代哪里?
只替代第二个 schema 文本框。第一个操作文档仍需提供;实际解析格式由明确选择决定,不由文件名或 MIME 推断。