Eine GraphQL-API ist eine Programmierschnittstelle, bei der der Aufrufer in einer Abfrage genau beschreibt, welche Daten er haben will. Facebook hat GraphQL 2012 intern entwickelt und 2015 veröffentlicht, heute pflegt es die GraphQL Foundation.
- GraphQL-API
Eine Schnittstelle mit einer eigenen Abfragesprache, in der der Aufrufer die gewünschten Felder und Verknüpfungen selbst festlegt.
Beispiel: „Über die GraphQL-API des CMS holt die App Titel, Bild und Autor eines Artikels in einer einzigen Abfrage.“Auch: GraphQL, die Abfragesprache selbst.
Abgrenzung zur REST-API: REST verteilt die Daten auf viele Adressen mit festem Inhalt. GraphQL hat meist eine einzige Adresse, und die Abfrage bestimmt den Inhalt.
Wie eine GraphQL-API arbeitet
Die Schnittstelle beschreibt in einem Schema, welche Datentypen es gibt und wie sie zusammenhängen. Der Aufrufer schickt eine Abfrage, die aussieht wie das gewünschte Ergebnis ohne Werte, und bekommt genau diese Struktur als JSON zurück.
{
artikel(slug: "relaunch") {
titel
autor { name }
}
}Änderungen laufen über sogenannte Mutations, Echtzeit-Updates über Subscriptions.
Was eine GraphQL-API besser kann
Weniger Daten übertragen und weniger Anfragen stellen. Eine Seite, die bei REST fünf Adressen abfragen müsste und jedes Mal mehr Felder bekäme als nötig, holt bei GraphQL alles in einem Durchgang. Gerade für Apps im Mobilfunknetz ist das spürbar.
Viele Headless-CMS bieten deshalb neben REST auch GraphQL an, Statamic etwa in der Pro-Version.
Wann eine GraphQL-API sich lohnt
Wenn viele verschiedene Oberflächen dieselben Daten in unterschiedlichem Zuschnitt brauchen. Für eine Schnittstelle mit wenigen, festen Abfragen ist REST einfacher zu bauen, zu cachen und abzusichern, weil GraphQL-Abfragen beliebig tief werden können.