Die eingebaute GraphQL-Schnittstelle nutzen: Endpoint, erste Abfragen mit einem GraphQL-Client
Die eingebaute GraphQL-Schnittstelle nutzen: Endpoint, erste Abfragen mit einem GraphQL-Client
~6 Min. Lesezeit Zuletzt aktualisiert am 9. August 2026
Bevor eigene Queries geschrieben werden, hilft ein praktischer Blick auf das, was bereits funktioniert: der bestehende /graphql-Endpunkt gegen den eigenen Entwicklungs-Shop. Das schärft das Gefühl für Request-/Response-Format, bevor Kapitel 4 das erste eigene Modul anlegt.
Den Endpunkt finden
Der GraphQL-Endpunkt liegt unter der Basis-URL des Shops, Pfad /graphql - bei diesem Projekt lokal also z. B. https://mironsoft.test/graphql. Es gibt keinen separaten Port und keine separate Domain, der Endpunkt läuft über denselben Docker-Container wie der reguläre Storefront.
Werkzeuge für erste Abfragen
Drei Wege eignen sich zum Ausprobieren, ganz ohne eigenen Code:
- curl - immer verfügbar, gut für schnelle Checks und für spätere CI-Skripte.
- Ein dedizierter GraphQL-Client wie Altair, Insomnia oder der GraphQL-Modus von Postman - komfortabler dank Syntax-Highlighting, Schema-Introspection und Autovervollständigung.
- Automatisierte Tests gegen
GraphQlAbstract- dazu ausführlich Kapitel 24, hier zunächst nur manuell.
curl -s https://mironsoft.test/graphql \
-H "Content-Type: application/json" \
-d '{"query": "{ storeConfig { store_code base_currency_code } }"}' | jqDer Request-Body ist reines JSON mit einem Feld query (String) und optional variables (Objekt) sowie operationName - dazu gleich mehr. Die Antwort ist ebenfalls JSON, mit einem Feld data für erfolgreiche Felder und optional errors für fehlgeschlagene.
Schema-Introspection: das Schema selbst abfragen
GraphQL-Schemas sind selbstbeschreibend - das Schema lässt sich per Introspection-Query erkunden, genau das nutzen GraphQL-Clients für Autovervollständigung:
query {
__type(name: "ProductInterface") {
name
fields {
name
type { name kind }
}
}
}In einem GraphQL-Client wie Altair reicht ein Klick auf "Docs", um das komplette zusammengeführte Schema (Kapitel 2) durchsuchbar zu machen - inklusive aller Core-Typen wie ProductInterface, CustomerOutput oder CartItemInterface.
Variablen statt String-Verkettung
Werte gehören nicht direkt in den Query-String, sondern in ein separates variables-Objekt - das verhindert Injection-ähnliche Fehler und macht Queries wiederverwendbar:
{
"query": "query GetProduct($sku: String!) { products(filter: { sku: { eq: $sku } }) { items { name price_range { minimum_price { final_price { value } } } } } }",
"variables": { "sku": "24-MB01" }
}Achtung: eq, match, in und Co. sind Operatoren des wiederverwendbaren Core-Typs FilterTypeInput - das Muster taucht in dieser Serie später beim eigenen Veranstaltungen-Filter wieder auf (Kapitel 14), statt einen eigenen Filtertyp neu zu erfinden.
Fehlerantworten richtig lesen
Ein GraphQL-Response kann data und errors gleichzeitig enthalten - Teilfehler auf einzelnen Feldern schließen erfolgreiche Nachbarfelder nicht aus. Jeder Fehler trägt eine category in extensions, die verrät, um welche Art Fehler es sich handelt - mehr dazu in Kapitel 19 und Kapitel 25.
{
"errors": [
{
"message": "Field \"typo_field\" doesn't exist on type \"Query\"",
"extensions": { "category": "graphql" }
}
]
}Tipp: Für schnelle manuelle Tests gegen die lokale Entwicklungsumgebung lohnt sich ein Alias oder eine kleine .http-Datei im Projekt - dieselben Requests landen so unter Versionskontrolle statt in verstreuten Terminal-Historien.
Mit dem Gefühl für Request-Format, Introspection und Fehlerformat geht es in Block 2 an die erste eigene Query in einem eigenen Modul.