GraphQL Schema 格式化工具
校验并重新格式化 GraphQL SDL(Schema Definition Language,模式定义语言),支持 type、interface、enum、input、scalar、union 和 directive 定义。无效的 schema 会报告精确的语法错误及行号和列号;有效的 schema 会以统一的 2 或 4 空格缩进重新输出,并可选择按字母顺序排列类型和字段。
输入
格式化选项
输出
使用此工具的更多方式
REST API
curl -X POST https://api.iotools.cloud/v1/tool/graphql-schema-formatter \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"graphqlInput": "\"\"\"\nA simple blog API schema.\n\"\"\"\nschema {\n que…",
"indentWidth": "2",
"sortAlphabetically": ""
}'替换成您账户中的密钥。工具的字段即为请求体——没有额外包装。
让 AI 代理执行
Use the IOTools `graphql-schema-formatter` tool (GraphQL Schema Formatter) on this input:
YOUR_INPUT_HERE将此粘贴给任何已连接 IOTools MCP 服务器的代理,再加上您的输入内容。
嵌入式小组件
<iframe
src="https://iotools.cloud/embed/graphql-schema-formatter/"
width="100%" height="520" frameborder="0" scrolling="no" loading="lazy"
title="GraphQL Schema 格式化工具 — iotools.cloud"
sandbox="allow-scripts allow-forms allow-same-origin allow-downloads allow-popups allow-popups-to-escape-sandbox"
allow="clipboard-write"
style="width:100%;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden"></iframe>
<script src="https://iotools.cloud/embed.js" async></script>把它放到您自己的页面上——免费,无需密钥,只需保留一个反向链接。
| 每次 API/MCP 调用费用 | 5 积分起 |
|---|---|
| 需要更多积分? | 查看定价 |
也可通过
使用指南
粘贴一段 GraphQL schema——用 SDL(Schema Definition Language,模式定义语言)编写的 type、interface、enum、input、scalar、union 或 directive 定义——即可获得经过校验、格式统一的版本。GraphQL Schema 格式化工具 使用 GraphQL 自身采用的同一个参考解析器来解析你的 schema,因此真正的语法错误会附带确切的行号和列号,而不是猜测;有效的 schema 则会以整洁统一的间距重新输出。
它适用于 schema 格式混乱的各种情况:从 Pull Request 中复制的、从文档里摘出的、由 code-first 框架生成的,或者 AI 助手给出的缩进不一致的内容。直接粘贴进来,即可得到规范化的版本。
使用方法
- 将 GraphQL SDL 粘贴到输入框中,或上传
.graphql、.gql或.sdl文件。 - 可选:设置 缩进宽度(2 或 4 个空格),并切换 按字母顺序排列类型和字段。
- 复制格式化结果,或将其下载为
schema.graphql。
输入内容或更改选项时,格式化会自动进行。
功能说明
- 真正的校验。 你的 schema 会由
graphql-js解析,它是 GraphQL 规范的参考实现,也是 Apollo Server、GraphQL Code Generator 等工具背后所用的同一个解析器。格式错误的 schema(缺少冒号、大括号未闭合、无法识别的 token)会返回解析器给出的确切错误信息,以及出错位置的行号和列号,而不会悄悄输出一团混乱的内容。 - 统一的缩进。 可选 2 或 4 个空格;每个块——
type、interface、input、enum、schema以及多行描述——都会统一重新缩进。 - 保留描述。 单行描述(
"...")和块描述("""...""")都会继续附着在它们所说明的类型或字段上。 - 可选的字母排序。 启用后,顶层定义会先按种类分组(标量、枚举、接口、联合类型、对象类型、输入类型、指令),每组内再按名称排序,
schema { ... }块始终位于最前面;type/interface/input主体中的字段,以及enum主体中的值,也会按字母顺序排列。联合类型的成员顺序保持不变,因为它可能有意义(例如将首选类型放在最前)。
隐私
所有处理都在你的浏览器中、于客户端完成。你的 schema 永远不会被上传到服务器。
它会保留 # 注释吗?
不会。GraphQL 自身的词法分析器会将 # 风格的注释视为无关内容,并在解析前将其丢弃——它们不属于 schema 的 AST,因此任何基于参考解析器构建的格式化工具都无法将其原样还原。而字符串描述("..." 和 """...""")确实属于 schema 的一部分,会被完整保留。
它会校验类型之间的引用吗?
它检查的是语法——SDL 是否能被解析为有效的 GraphQL——而不是完整的 schema 语义(例如未解析的类型引用,或在未声明该指令的地方使用了指令)。若需要这一层的校验,请使用 GraphQL 服务端库构建 schema。
能格式化整个联邦式或多文件 schema 吗?
将它们合并为一份完整文档后粘贴即可——extend type、extend interface 和 extend schema 定义均受支持,并会像其他定义一样被格式化。
“按字母顺序排列”具体会重排什么?
有两件相互独立的事:顶层定义的顺序(先按种类分组,再按名称排序),以及每个定义内部的字段/枚举值顺序。它从不重命名任何内容,也不会更改类型或参数。