Was ist GraphQL?
GraphQL ist eine Abfragesprache für Programmierschnittstellen. Statt fest vorgegebene Datenpakete abzurufen, beschreibt die anfragende Anwendung selbst, welche Felder sie braucht. Genau diese erhält sie zurück. Entwickelt wurde GraphQL bei Facebook, seit 2015 ist die Spezifikation öffentlich und quelloffen.
Wie funktioniert GraphQL?
Eine GraphQL-Schnittstelle hat in der Regel nur einen einzigen Endpunkt. Ein Schema beschreibt, welche Daten und Beziehungen verfügbar sind, etwa Produkte mit Varianten, Preisen und Bildern. Die Anwendung schickt eine Abfrage, die genau diese Struktur nachbildet. Die Antwort kommt in derselben Form zurück. So lassen sich zusammenhängende Daten in einer einzigen Anfrage holen, für die bei klassischen Schnittstellen mehrere Aufrufe nötig wären. Änderungen an Daten laufen über sogenannte Mutations.
GraphQL in der Praxis
Im E-Commerce begegnet GraphQL vor allem bei Shopify, dessen Storefront- und Admin-Schnittstellen auf GraphQL setzen, sowie bei Magento, das eine GraphQL-Schnittstelle für eigene Frontends mitbringt. Besonders nützlich ist das für Headless Commerce, bei dem ein eigenes Frontend gezielt nur die Daten lädt, die eine Seite anzeigt. Der Preis dafür ist mehr Sorgfalt auf der Serverseite: Sehr verschachtelte Abfragen können Last erzeugen, Caching ist aufwendiger als bei einfachen Abrufen und Shopify begrenzt Abfragen über ein Kostenmodell. Für die Anbindung von Shop, Warenwirtschaft und anderen Systemen wählen wir die Schnittstellenart deshalb danach, was das jeweilige System anbietet und was der Anwendungsfall braucht.
Abgrenzung zu verwandten Begriffen
REST ist der bekanntere Ansatz für Schnittstellen: Dort gibt es viele Endpunkte mit fest definierten Antworten. GraphQL ist kein Ersatz für eine API, sondern eine Art, sie zu gestalten. Für Benachrichtigungen bei Ereignissen werden ergänzend Webhooks genutzt.