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

> 在线格式化、压缩和校验 GraphQL 查询与 SDL：语法错误精确到行列，检查未使用的变量和片段，生成 curl、fetch 请求，并列出类型之间的引用关系。

- 网址: https://qilingtools.com/zh/graphql-format
- 分类: 开发工具 (https://qilingtools.com/zh/dev)
- 标签: [开发](https://qilingtools.com/zh/tags/dev), [代码格式化](https://qilingtools.com/zh/tags/format), [网络 HTTP](https://qilingtools.com/zh/tags/network)
- 最后更新: 2026-10-26
- 价格: 免费，无需注册
- 隐私: 在浏览器本地处理，文件不上传服务器

从日志、抓包或代码里复制出来的 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 时会列出每个类型的字段、实现的接口、联合成员，以及它引用了哪些类型、被哪些类型引用，并提示未定义的类型。全部在浏览器本地完成。

## 使用步骤

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

## 功能特点

- 完整的 GraphQL 词法与语法分析（可执行文档 + SDL）
- 可调缩进与行宽的格式化，保留注释
- 压缩为最短的单行文本
- 语法错误精确到行列并标出位置
- 检查未使用 / 未声明变量、未使用 / 未定义片段与循环引用
- 按操作生成请求体 JSON、curl、fetch()
- SDL 类型引用关系列表
- 语法高亮，纯本地处理

## 常见问题

### 格式化会改变查询的含义吗？

不会。格式化只调整空白、换行、缩进和逗号，字符串中的转义会规范化（如 \u0041 写成 A），值本身不变。工具测试过“格式化后再解析，语法树与原文一致；再格式化结果不变”。压缩会把块字符串改写成等价的普通字符串。

### 为什么提示变量未使用，而它明明在片段里用到了？

检查会沿着操作引用的片段（包括片段里再引用的片段）收集变量，所以片段里用到的变量算作已使用。如果仍有提示，通常是该片段没有被这个操作展开，或者片段名拼写不同；规范要求每个声明的变量都必须被用到，否则服务器会报错。

### 能检查字段是否存在于 schema 吗？

不能。这里做的是语法和文档内部的检查（变量、片段、重名、未定义类型），不加载 schema，所以无法判断字段名、参数类型是否正确。把 SDL 和查询分开粘贴时，SDL 部分会列出类型关系，并提示引用了但未定义的类型。

### 生成的 curl 能直接用吗？

把接口地址换成你的 GraphQL 端点，在 variables 里填好实际值，大多数服务器就可以直接执行；需要鉴权时再加上 -H 'Authorization: Bearer …'。请求只包含所选操作和它用到的片段，并附带 operationName。工具本身不会发送任何请求。

## 相关工具

- [JSON 格式化](https://qilingtools.com/zh/json): 免费在线 JSON 格式化：一键美化、压缩，实时语法校验并定位到出错行列，支持树形视图折叠、键名排序、转义与去转义、Unicode 转中文、复制下载，数据不上传。
- [Base64 编解码](https://qilingtools.com/zh/base64): 免费在线 Base64 编码解码工具：支持中文 UTF-8、URL 安全变体，文本与 Base64 互转，实时转换，本地处理不上传。
- [URL 编解码](https://qilingtools.com/zh/url-encode): 免费在线 URL 编码解码工具：encodeURIComponent 与 encodeURI 两种模式，处理中文、空格与特殊符号，本地实时转换不上传。
- [JWT 解析](https://qilingtools.com/zh/jwt): 免费在线 JWT 解析工具：解码 JWT 的 Header 与 Payload，展示过期时间、签发时间等，本地解析不上传，保护令牌安全。
- [时间戳转换](https://qilingtools.com/zh/timestamp): 免费在线 Unix 时间戳转换工具：时间戳与日期互转，自动识别秒/毫秒，显示本地时间、UTC、ISO 8601 和相对时间，实时更新。
- [哈希计算](https://qilingtools.com/zh/hash): 免费在线哈希/摘要计算工具：对文本或文件计算 SHA-1、SHA-256、SHA-384、SHA-512，使用浏览器加密接口本地完成，文件不上传。
- [UUID 生成](https://qilingtools.com/zh/uuid): 免费在线 UUID 生成器：使用加密安全随机数批量生成符合 RFC 4122 的 UUID v4，可大写、去连字符、加花括号，一键复制。
- [进制转换](https://qilingtools.com/zh/base-convert): 免费在线进制转换工具：二进制、八进制、十进制、十六进制及任意 2–36 进制互转，支持大整数（BigInt），本地实时计算。
