Namen und Typen von GraphQL-Variablen extrahieren
Dieser GraphQL-Variablenextraktor liest ein ausführbares Dokument, prüft dessen Syntax und listet die Variablen jeder Abfrage, Mutation oder Subscription auf.
Im Browser ausführen – kostenlos
Das Ergebnis bewahrt die Operationsart, den optionalen Operationsnamen sowie Namen und exakte Typnotation jeder Variablen einschließlich Listen und Nicht-null-Markierungen. Damit können Sie Eingabeformulare erzeugen, Client-Operationen prüfen, Integrationen dokumentieren oder Abfragetext vor der Ausführung zuverlässig kontrollieren.
Unterscheiden Sie Deklarationen von Verwendungen
GraphQL-Variablen erscheinen als Deklaration wie <code>$id: ID!</code> neben dem Operationsnamen und als Verwendung wie <code>user(id: $id)</code> im Auswahlblock. Diese Funktion gibt ausschließlich Deklarationen zurück. Sie ordnet sie der jeweiligen Abfrage, Mutation oder Subscription zu, sodass gleiche Namen in verschiedenen Operationen nicht vermischt werden. Die wichtige Typnotation bleibt erhalten, etwa <code>String</code>, <code>ID!</code> oder <code>[ID!]!</code>. Standardwerte und Direktiven werden zur Syntaxprüfung analysiert, jedoch nicht ausgegeben. Fragmente werden ebenfalls geprüft, erzeugen aber keine Einträge, da sie keine Operationsvariablen deklarieren. Eine anonyme Kurzabfrage erscheint als namenlose Query-Operation mit leerer Variablenliste.
Nutzen Sie eine deterministische Syntaxprüfung
Reguläre Ausdrücke werden bei Kommentaren, Zeichenketten, Block-Strings, verschachtelten Listen, Objektvorgaben, Direktiven, Fragmenten, Aliasen und mehreren Operationen unzuverlässig. Dieser Parser zerlegt das gesamte Dokument in Token und folgt der ausführbaren GraphQL-Grammatik. Er weist nicht abgeschlossene Strings, ungültige Zahlen, unerwartete Zeichen, leere Auswahlblöcke und unvollständige Definitionen zurück. Das Ergebnis eignet sich daher als frühe Build-Prüfung. Weder Netzwerk noch Schema werden abgefragt. Deshalb kann die Funktion nicht feststellen, ob ein Feld auf Ihrem Server existiert, ein Variablentyp zu einem Argument passt oder schemaabhängige Regeln erfüllt sind. Verwenden Sie sie für Syntax und Deklarationsermittlung und führen Sie anschließend bei vorhandenem Schema eine getrennte Schemavalidierung durch.
Binden Sie das strukturierte Ergebnis ein
Die Antwort enthält das Array <code>operations</code> in Dokumentreihenfolge und die Summe <code>variable_count</code>. Jede Operation nennt ihre Art, bei Angabe ihren Namen und ein Array <code>variables</code> mit Datensätzen aus <code>name</code> und <code>type</code>. Diese stabile Form unterstützt Eingabeeditoren, Versionsvergleiche, Dokumentationstabellen und die Erkennung neuer Pflichtwerte. Getrennte Operationen vermeiden falsche Konflikte bei wiederholten Namen. Die Eingabe ist auf 200,000 Zeichen begrenzt, damit die Verarbeitung beschränkt bleibt. Es wird keine Abfrage ausgeführt; Schema, Header, Zugangsdaten und Laufzeitwerte sind unnötig. Sie können das Dokument im Browser einfügen oder die API für $0.002 je Element aufrufen. Bei einem Fehler nennt die Antwort die ungefähre Zeichenposition.
Anwendungsfälle
Variablenformular erstellen
Lesen Sie Deklarationen aus und erzeugen Sie passende Felder, bevor Laufzeitwerte erfasst werden.
Persistierte Abfragen prüfen
Vergleichen Sie genaue GraphQL-Namen und -Typen nach Änderungen an versionierten Operationen.
Client-Operationen dokumentieren
Wandeln Sie ein Dokument mit mehreren Operationen in ein gruppiertes Verzeichnis um.
Häufige Fragen
Wird die GraphQL-Abfrage ausgeführt?
Nein. Das Dokument wird lokal analysiert; ein GraphQL-Endpunkt wird nie kontaktiert.
Werden Verwendungen von Variablen aufgenommen?
Nein. Nur Deklarationen werden ausgegeben; Referenzen sind keine weiteren Deklarationen.
Bleiben Listen- und Nicht-null-Markierungen erhalten?
Ja. ID!, [String!] und [ID!]! behalten ihre vollständige GraphQL-Notation.
Werden Felder gegen mein Schema validiert?
Nein. Die Syntaxprüfung erfolgt ohne Schema; Existenz und Kompatibilität benötigen einen weiteren Schritt.
Sind mehrere Operationen und Fragmente möglich?
Ja. Operationen bleiben geordnet; Fragmente werden geprüft, fügen aber keine Deklarationen hinzu.
Was kostet ein API-Aufruf?
Jedes Element kostet $0.002. Die Webversion führt denselben Parser lokal aus.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem 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)Beispiel-Anfrage
{
"query": "query FindUser($id: ID!, $withPosts: Boolean = false) { user(id: $id) { name posts @include(if: $withPosts) { title } } }"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.graphql_query_variables_extract",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Limits
max_chars | 200000 |
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |