Estrarre nomi e tipi delle variabili GraphQL
Questo estrattore legge un documento GraphQL eseguibile, ne controlla la sintassi ed elenca le variabili dichiarate da ogni query, mutazione o sottoscrizione.
Esegui gratis nel browser
Il risultato conserva il genere e il nome facoltativo dell’operazione, oltre al nome e alla notazione esatta del tipo di ogni variabile, comprese liste e indicazioni non nulle. È utile per generare moduli, revisionare operazioni client, documentare integrazioni o controllare una query prima dell’esecuzione.
Distingua le dichiarazioni dagli utilizzi
Le variabili GraphQL compaiono come dichiarazioni, per esempio <code>$id: ID!</code>, accanto all’operazione e come riferimenti, per esempio <code>user(id: $id)</code>, nella selezione. Questa capacità restituisce solo le dichiarazioni e le raggruppa sotto la query, mutazione o sottoscrizione proprietaria. Operazioni diverse possono quindi dichiarare lo stesso nome senza essere unite. La notazione viene preservata: <code>String</code>, <code>ID!</code> o <code>[ID!]!</code>. Valori predefiniti e direttive vengono analizzati per verificare la sintassi, ma non appaiono nel risultato. Anche i frammenti vengono controllati, senza produrre record perché non dichiarano variabili di operazione. Una query anonima abbreviata compare senza nome e con un elenco vuoto.
Controlli la sintassi in modo deterministico
Un’espressione regolare diventa inaffidabile con commenti, stringhe, stringhe a blocchi, liste annidate, oggetti predefiniti, direttive, frammenti, alias e operazioni multiple. Questo parser tokenizza l’intero documento e segue la grammatica eseguibile GraphQL. Rifiuta stringhe non terminate, numeri errati, caratteri inattesi, selezioni vuote e definizioni incomplete. Il risultato può quindi proteggere una fase iniziale della build. Non vengono consultati rete o schema. Lo strumento non stabilisce se un campo esista sul server, se un tipo corrisponda a un argomento o se siano rispettate regole dipendenti dallo schema. Lo usi per sintassi e individuazione delle dichiarazioni, poi esegua separatamente la validazione rispetto allo schema disponibile.
Integri il risultato strutturato
La risposta contiene l’array <code>operations</code> nell’ordine originale e il totale <code>variable_count</code>. Ogni operazione indica la propria categoria, include il nome se presente e contiene <code>variables</code> con record <code>name</code> e <code>type</code>. La struttura è adatta a generare editor, confrontare operazioni versionate, produrre tabelle o rilevare nuovi input obbligatori. La separazione evita falsi conflitti tra nomi ripetuti. L’input è limitato a 200,000 caratteri per mantenere finita l’elaborazione. Non viene eseguita alcuna query e non servono schema, intestazioni, credenziali o valori. Lei può incollare il documento nel browser oppure chiamare l’API a $0.002 per elemento. In caso di sintassi errata viene indicata la posizione approssimativa.
Casi d'uso
Creare un modulo per le variabili
Legga le dichiarazioni e generi i campi corretti prima di raccogliere i valori di esecuzione.
Revisionare query persistite
Confronti nomi e tipi GraphQL esatti quando cambia un’operazione versionata.
Documentare operazioni client
Trasformi un documento con più operazioni in un inventario raggruppato.
Domande frequenti
La query GraphQL viene eseguita?
No. Il documento viene analizzato localmente senza contattare endpoint GraphQL.
Sono inclusi gli utilizzi delle variabili?
No. Sono restituite solo le dichiarazioni; i riferimenti non costituiscono nuove dichiarazioni.
La notazione di liste e valori non nulli viene conservata?
Sì. ID!, [String!] e [ID!]! mantengono la notazione GraphQL completa.
I campi vengono validati rispetto al mio schema?
No. La sintassi è verificata senza schema; esistenza e compatibilità richiedono un’altra fase.
Sono ammessi più operazioni e frammenti?
Sì. Le operazioni restano ordinate; i frammenti sono controllati senza aggiungere dichiarazioni.
Quanto costa una chiamata API?
Ogni elemento costa $0.002. La versione web esegue localmente lo stesso parser.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo 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)Esempio di richiesta
{
"query": "query FindUser($id: ID!, $withPosts: Boolean = false) { user(id: $id) { name posts @include(if: $withPosts) { title } } }"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.graphql_query_variables_extract",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_chars | 200000 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |