功能介绍
GraphQL 格式化工具用于快速美化或压缩 GraphQL 查询语句(Query)、变更(Mutation)、订阅(Subscription)以及 Schema 定义。工具完全在浏览器本地运行,无需上传服务器,支持语法高亮、括号匹配检查和一键复制。
- 格式化(美化):按大括号、小括号、方括号的层级自动缩进,逗号和括号处自动换行,提升可读性。
- 压缩:去除多余空格、换行和注释,仅保留必要空白,减小传输体积。
- 语法高亮:关键字、字符串、数字、指令、注释以不同颜色显示,便于阅读。
- 错误检测:自动检测括号不匹配等常见语法问题,并给出位置提示。
如何使用
- 在上方输入框中粘贴或输入你的 GraphQL 语句。
- 选择「格式化」或「压缩」模式,可勾选是否启用语法高亮。
- 点击「格式化 / 压缩」按钮,或直接输入等待自动计算(约 300ms 延迟)。
- 结果会显示在下方输出区,同时展示行数、字符数和最大嵌套深度。
- 点击「复制结果」按钮可将格式化后的内容一键复制到剪贴板。
计算原理
本工具采用字符级解析器逐字符扫描输入,核心逻辑如下:
- 维护一个括号栈,遇到
{、(、[时入栈并增加缩进层级;遇到对应闭括号时出栈并减少层级。 - 遇到字符串(单/双引号)时进入字符串模式,内部内容不做缩进或换行处理,保证字符串原样输出。
- 遇到
#开头的注释时保留到行尾,不参与格式化解析。 - 逗号、分号后自动换行;开括号后换行并缩进,闭括号前换行并回退缩进。
- 压缩模式下移除所有非必要空白(标识符之间保留单个空格),同时移除注释。
括号匹配校验基于栈结构:若闭括号与栈顶不匹配,或扫描结束后栈不为空,则判定为语法错误。
注意事项
- 本工具仅做格式处理和基础括号校验,不进行完整的 GraphQL 语法验证,字段名、类型名等语义错误无法检测。
- 字符串中的转义引号(如
\")已正确处理,不会误判为字符串结束。 - 支持 GraphQL 常用语法,包括 Fragment、Directive、Enum、Input、Schema 定义等。
- 所有处理均在本地浏览器完成,不会上传你的 GraphQL 语句,保障数据安全。