GraphQL

GraphQL ist eine von Facebook entwickelte Anfragesprache für APIs, mit der Clients genau die Daten anfordern können, die sie benötigen - nicht mehr und nicht weniger.

Kurz erklärt

GraphQL wurde 2012 intern bei Facebook entwickelt und 2015 als Open-Source-Projekt veröffentlicht. Anders als bei klassischen REST-APIs, bei denen jede Ressource einen eigenen Endpunkt mit fest definierter Antwortstruktur hat, gibt es bei GraphQL üblicherweise nur einen einzigen Endpunkt. Clients senden eine Anfrage, die exakt beschreibt, welche Felder und verknüpften Daten sie benötigen, und erhalten genau diese Struktur als Antwort zurück.

Beispiel

Eine mobile App, die nur den Namen und das Profilbild eines Nutzers anzeigen möchte, kann mit GraphQL gezielt genau diese beiden Felder anfragen - statt wie bei vielen REST-APIs den kompletten Nutzerdatensatz mit allen Feldern übertragen zu bekommen, obwohl nur ein Bruchteil davon benötigt wird.

Warum ist das relevant?

GraphQL reduziert Over-Fetching (unnötig viele Daten laden) und Under-Fetching (mehrere Anfragen für zusammengehörige Daten nötig), was besonders bei mobilen Anwendungen mit begrenzter Bandbreite und bei komplexen, stark vernetzten Datenmodellen Performance-Vorteile bringt. Für Entwicklerteams bedeutet es zudem, dass sich Frontend und Backend unabhängiger voneinander weiterentwickeln lassen, da neue Felder ergänzt werden können, ohne bestehende Anfragen zu brechen.

Häufige Missverständnisse

GraphQL ist keine Datenbank und kein Ersatz für REST in jedem Anwendungsfall - es ist eine Anfragesprache, die vor einer beliebigen Datenquelle sitzen kann, häufig auch vor denselben Datenbanken, die auch REST-APIs bedienen. Auch ist GraphQL nicht automatisch schneller als REST: Komplexe, tief verschachtelte Anfragen können serverseitig sogar aufwendiger zu verarbeiten sein als einfache REST-Aufrufe.

Weiterführende Inhalte

Quellen & Dokumentation