Extraer nombres y tipos de variables GraphQL
Pegue un documento GraphQL y obtenga sus variables declaradas por operación: FindUser declara id como ID!, filters como [UserFilter!] y limit como Int, y Rename declara id y name, cinco variables en total. Antes se comprueba la sintaxis. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Este extractor de variables GraphQL lee un documento ejecutable, comprueba su sintaxis y enumera las variables declaradas en cada consulta, mutación o suscripción. Conserva la clase y el nombre opcional de la operación, además del nombre y la notación exacta del tipo de cada variable, incluidas listas y marcas de no nulo. Resulta útil para crear formularios, revisar operaciones cliente, documentar integraciones o comprobar consultas antes de ejecutarlas.
Distinga declaraciones de usos
Las variables GraphQL aparecen como declaraciones, por ejemplo <code>$id: ID! </code>, junto al nombre de una operación, y como referencias, por ejemplo <code>user(id: $id)</code>, dentro de la selección. Esta capacidad solo devuelve las declaraciones.
Las agrupa bajo la consulta, mutación o suscripción correspondiente, por lo que dos operaciones pueden declarar el mismo nombre sin mezclarse. La notación del tipo se conserva: <code>String</code>, <code>ID! </code> o <code>[ID!]!
</code>. Los valores predeterminados y las directivas se analizan para comprobar la sintaxis, pero no se incluyen. Los fragmentos también se validan, aunque no producen entradas porque no declaran variables de operación. Una consulta abreviada anónima aparece como una operación de consulta sin nombre y con una lista vacía de variables.
Valide la sintaxis de forma determinista
Este analizador tokeniza el documento completo y sigue la gramática ejecutable de GraphQL. Rechaza cadenas sin cerrar, números inválidos, caracteres inesperados, selecciones vacías y definiciones incompletas. Por eso puede utilizarse como control temprano en una compilación.
No consulta la red ni un esquema. En consecuencia, no determina si un campo existe en su servidor, si el tipo de una variable coincide con un argumento o si se cumplen reglas dependientes del esquema. Use esta capacidad para sintaxis y descubrimiento de declaraciones, y añada después una validación contra el esquema cuando disponga de él.
Integre el resultado estructurado
Cada operación indica su clase, incluye el nombre cuando existe y aporta un array <code>variables</code> con registros <code>name</code> y <code>type</code>. Esta forma estable sirve para generar editores, comparar operaciones versionadas, crear tablas de documentación o detectar nuevas entradas obligatorias. Mantener separadas las operaciones evita falsos conflictos.
La entrada está limitada a 200,000 caracteres para acotar el análisis. No se ejecuta ninguna consulta ni se solicitan esquemas, cabeceras, credenciales o valores. Los errores señalan una posición aproximada del problema.
Qué puede hacer con ella
Crear un formulario de variables
Lea las declaraciones y genere las entradas correctas antes de solicitar valores de ejecución.
Revisar consultas persistidas
Compare nombres y tipos GraphQL exactos cuando cambie una operación versionada.
Documentar operaciones cliente
Convierta un documento con varias operaciones en un inventario agrupado por clase.
Preguntas frecuentes
¿Incluye los usos de variables?
No. Solo devuelve variables declaradas; las referencias en campos, argumentos o directivas no cuentan como declaraciones.
¿Conserva las marcas de lista y no nulo?
Sí. Tipos como ID!, [String!] y [ID!]! mantienen su notación GraphQL completa.
¿Valida campos contra mi esquema?
No. Valida la sintaxis sin esquema; la existencia de campos y la compatibilidad requieren otra etapa.
¿Admite varias operaciones y fragmentos?
Sí. Devuelve las operaciones en orden y comprueba los fragmentos, que no añaden declaraciones.
¿Comprueba la consulta contra los tipos de mi servidor?
No. Solo verifica que el documento sea GraphQL válido y lee las declaraciones. Saber si su servidor ofrece un dato concreto o si el tipo de una variable encaja con un argumento requiere la definición de tipos del servidor, en un paso aparte.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
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)Ejemplo de solicitud
{
"query": "query FindUser($id: ID!, $withPosts: Boolean = false) { user(id: $id) { name posts @include(if: $withPosts) { title } } }"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.graphql_query_variables_extract",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_chars | 200000 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Valide la sintaxis de forma determinista
Una expresión regular deja de ser fiable cuando aparecen comentarios, cadenas, cadenas de bloque, listas anidadas, objetos predeterminados, directivas, fragmentos, alias u operaciones múltiples.
Integre el resultado estructurado
La respuesta contiene el array <code>operations</code> en el orden del documento y el total <code>variable_count</code>. Puede pegar el documento en el navegador o llamar a la API por $0.002 por elemento.
Preguntas técnicas
¿Ejecuta la consulta GraphQL?
No. Analiza el documento localmente y nunca contacta con un endpoint GraphQL.
¿Cuánto cuesta una llamada API?
Cada elemento cuesta $0.002. La versión web ejecuta localmente el mismo analizador.