跳到主内容
UniKit

GraphQL格式化

GraphQL Schema 和查询语句格式化:自研词法扫描,按 {} () [] 层级缩进、逗号可选、字符串与 """块字符串""" 内容原样保留、# 注释不被吃掉,支持美化与压缩两种模式。

浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。

格式化结果

在上方输入 GraphQL,结果会实时显示在这里。

这个工具能做什么

  • 把从后端接口文档、GraphiQL 或日志里复制出来的单行 GraphQL 查询还原成缩进清楚的版本,方便阅读和 code review。
  • 整理 GraphQL Schema(SDL):每个类型、字段、参数各占一行,方便对比两个版本的接口定义。
  • 在提交前压缩查询:去掉换行与多余空白,把查询塞进 URL 查询串、请求头或环境变量里。
  • 排查语法问题:未闭合的字符串、`"""` 块字符串和括号不配对会直接报错,比浏览器里的报错更早暴露问题。

示例

输入

query Q($id:ID!){user(id:$id){id name posts{title}}}

输出

query Q($id: ID!) {
  user(id: $id) {
    id
    name
    posts {
      title
    }
  }
}

逗号是 GraphQL 里可忽略的分隔符,所以美化时会用换行代替逗号;字符串与 # 注释的内容不会被改写。

常见问题

格式化会改变查询的行为吗?

不会。GraphQL 规范里除字符串与注释外,空白和逗号都只是分隔符,重排它们不改变语义。字符串字面量、`"""` 块字符串和注释文本都会按原样保留。

为什么压缩模式把 # 注释删掉了?

注释在 GraphQL 里同样不参与语义,压缩时默认丢弃;如果注释需要保留(例如作为团队约定写在查询里),勾选「压缩时保留 # 注释」即可,输出会在注释后强制换行。

为什么我的字段名写在关键字后面时没有换行?

像 query、type、fragment、on、implements 这些词后面跟的名字属于定义头部(例如 fragment F on User),格式化器会把它们留在同一行;普通字段名之间才会换行。

报「括号不配对」怎么办?

说明 { }、( )、[ ] 的数量对不上,常见于复制查询时漏掉了最后的 },或者把多个查询粘在一起。把光标放到报错的行附近补齐括号即可。

输入会上传到服务器吗?

不会。词法扫描与缩进都在浏览器里用 JavaScript 完成,页面不发送任何请求,断网也能用。

关键词:graphqlgraphql formattergraphql beautifygraphql minifysdlquerygraphql 格式化graphql 美化graphql 压缩schema缩进词法解析

同类工具