Extrair nomes e tipos de variáveis GraphQL
Cole um documento GraphQL e receba as variáveis declaradas em cada operação: FindUser declara id como ID!, filters como [UserFilter!] e limit como Int, e Rename declara id e name, cinco variáveis no total. A sintaxe é verificada antes. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Este extrator lê um documento GraphQL executável, verifica a sintaxe e lista as variáveis declaradas em cada consulta, mutação ou assinatura. O resultado preserva o tipo e o nome opcional da operação, além do nome e da notação exata de cada variável, inclusive listas e marcadores não nulos. É útil para gerar formulários, revisar operações do cliente, documentar integrações ou verificar consultas antes da execução.
Separe declarações de referências
Variáveis GraphQL aparecem como declarações, como <code>$id: ID! </code>, ao lado da operação, e como referências, como <code>user(id: $id)</code>, na seleção. Esta capacidade retorna somente as declarações e as agrupa na consulta, mutação ou assinatura proprietária.
Assim, operações diferentes podem usar o mesmo nome sem serem combinadas. A notação relevante é preservada, incluindo <code>String</code>, <code>ID! </code> e <code>[ID!]!
</code>. Valores padrão e diretivas são analisados para comprovar a sintaxe, mas não entram no resultado. Fragmentos também são verificados, embora não gerem registros porque não declaram variáveis de operação. Uma consulta anônima abreviada é apresentada sem nome e com uma lista vazia.
Use uma verificação sintática determinística
Este parser tokeniza o documento inteiro e segue a gramática executável do GraphQL. Ele rejeita strings abertas, números inválidos, caracteres inesperados, seleções vazias e definições incompletas. Por isso, o resultado pode proteger uma etapa de build.
Nenhuma rede ou esquema é consultado. Portanto, a ferramenta não decide se um campo existe no seu servidor, se o tipo combina com um argumento ou se regras dependentes do esquema são atendidas. Use-a para sintaxe e descoberta de declarações; valide contra o esquema separadamente quando ele estiver disponível.
Integre a resposta estruturada
Cada operação informa sua categoria, inclui o nome quando escrito e contém <code>variables</code> com registros <code>name</code> e <code>type</code>. O formato serve para criar editores, comparar operações versionadas, montar documentação ou detectar uma nova entrada obrigatória. A separação evita conflitos falsos entre nomes repetidos.
A entrada é limitada a 200,000 caracteres para manter o processamento controlado. Nenhuma consulta é executada; esquema, cabeçalhos, credenciais e valores não são necessários. Um erro informa a posição aproximada do problema.
Casos de uso
Criar um formulário de variáveis
Leia as declarações e gere os campos corretos antes de coletar valores de execução.
Revisar consultas persistidas
Compare nomes e tipos GraphQL exatos quando uma operação versionada mudar.
Documentar operações do cliente
Transforme um documento com várias operações em um inventário agrupado.
Perguntas frequentes
As referências às variáveis são incluídas?
Não. Somente declarações são retornadas; referências em campos, argumentos ou diretivas não são novas declarações.
A notação de lista e não nulo é preservada?
Sim. Tipos como ID!, [String!] e [ID!]! mantêm a notação GraphQL completa.
Os campos são validados contra meu esquema?
Não. A sintaxe é validada sem esquema; existência e compatibilidade exigem outra etapa.
São aceitas várias operações e fragmentos?
Sim. As operações saem em ordem; fragmentos válidos são verificados, mas não adicionam declarações.
Ele confere a consulta com os tipos do meu servidor?
Não. Ele só verifica se o documento é GraphQL válido e lê as declarações. Saber se o servidor oferece um dado ou se o tipo de uma variável combina com um argumento exige a definição de tipos do servidor, em uma etapa separada.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/dev/graphql-query-variables-extract \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"query":"query FindUser($id: ID!, $withPosts: Boolean = false) { user(id: $id) { name posts @include(if: $withPosts) { title } } }"}'const res = await fetch("https://api.kit.forhosting.com/dev/graphql-query-variables-extract", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"query": "query FindUser($id: ID!, $withPosts: Boolean = false) { user(id: $id) { name posts @include(if: $withPosts) { title } } }"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/graphql-query-variables-extract",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"query": "query FindUser($id: ID!, $withPosts: Boolean = false) { user(id: $id) { name posts @include(if: $withPosts) { title } } }"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/graphql-query-variables-extract", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"query":"query FindUser($id: ID!, $withPosts: Boolean = false) { user(id: $id) { name posts @include(if: $withPosts) { title } } }"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"query":"query FindUser($id: ID!, $withPosts: Boolean = false) { user(id: $id) { name posts @include(if: $withPosts) { title } } }"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/graphql-query-variables-extract", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"query": "query FindUser($id: ID!, $withPosts: Boolean = false) { user(id: $id) { name posts @include(if: $withPosts) { title } } }"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.graphql_query_variables_extract",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_chars | 200000 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Use uma verificação sintática determinística
Expressões regulares falham diante de comentários, strings, blocos de texto, listas aninhadas, objetos padrão, diretivas, fragmentos, aliases e várias operações.
Integre a resposta estruturada
A resposta traz o array <code>operations</code> na ordem original e o total <code>variable_count</code>. Você pode colar o documento no navegador ou usar a API por US$ 0,002 por item.
Perguntas técnicas
A ferramenta executa a consulta GraphQL?
Não. Ela analisa o documento localmente e nunca acessa um endpoint GraphQL.
Quanto custa uma chamada à API?
Cada item custa US$ 0,002. A versão no navegador roda localmente o mesmo parser.