祈灵工具箱

🧿GraphQL 格式化与校验 - 压缩、语法检查、转 curl / fetch

从日志、抓包或代码里复制出来的 GraphQL 查询常常挤在一行,或者缩进乱七八糟。这个工具内置一个按 GraphQL 规范实现的词法和语法分析器,支持 query、mutation、subscription、片段与内联片段、变量及默认值、指令、别名,以及 SDL 中的 type、interface、enum、union、input、scalar、schema、directive 定义和 extend 扩展,也支持描述文字和块字符串。格式化时可选 2 空格、4 空格或 Tab 缩进和每行宽度,参数或变量过长会自动换成每行一个;注释会尽量保留在原来的位置。压缩模式去掉注释、逗号和多余空白,适合放进请求体。语法有错时会给出与 graphql-js 风格一致的错误信息,并标出行号、列号和出错位置。工具还会分析整个文档:列出所有操作和片段,提示声明了但没用到的变量、用了却没声明的变量(会追踪片段里的变量)、没有被使用的片段、引用了不存在的片段、片段循环引用和重名;选择一个操作即可生成只包含它和所需片段的请求,自动按变量类型填好示例 variables,输出 POST 请求体 JSON、curl 命令和 fetch() 代码。粘贴 SDL 时会列出每个类型的字段、实现的接口、联合成员,以及它引用了哪些类型、被哪些类型引用,并提示未定义的类型。全部在浏览器本地完成。

免费 · 无需注册 · 浏览器本地处理最后更新:

正在加载工具...

如何使用GraphQL 格式化

  1. 1粘贴 GraphQL 查询或 SDL,选择格式化或压缩,设置缩进、行宽和是否保留注释
  2. 2查看高亮结果;如有语法错误,按提示的行列位置修改
  3. 3查看文档结构与检查结果,选择操作生成 curl / fetch 请求,或在 SDL 中浏览类型关系

常见问题

格式化会改变查询的含义吗?
不会。格式化只调整空白、换行、缩进和逗号,字符串中的转义会规范化(如 \u0041 写成 A),值本身不变。工具测试过“格式化后再解析,语法树与原文一致;再格式化结果不变”。压缩会把块字符串改写成等价的普通字符串。
为什么提示变量未使用,而它明明在片段里用到了?
检查会沿着操作引用的片段(包括片段里再引用的片段)收集变量,所以片段里用到的变量算作已使用。如果仍有提示,通常是该片段没有被这个操作展开,或者片段名拼写不同;规范要求每个声明的变量都必须被用到,否则服务器会报错。
能检查字段是否存在于 schema 吗?
不能。这里做的是语法和文档内部的检查(变量、片段、重名、未定义类型),不加载 schema,所以无法判断字段名、参数类型是否正确。把 SDL 和查询分开粘贴时,SDL 部分会列出类型关系,并提示引用了但未定义的类型。
生成的 curl 能直接用吗?
把接口地址换成你的 GraphQL 端点,在 variables 里填好实际值,大多数服务器就可以直接执行;需要鉴权时再加上 -H 'Authorization: Bearer …'。请求只包含所选操作和它用到的片段,并附带 operationName。工具本身不会发送任何请求。