GraphQL ist eine Abfragesprache für APIs sowie eine Laufzeitumgebung zur Ausführung dieser Abfragen. Sie wurde entwickelt, um Clients eine präzisere und flexiblere Datenabfrage zu ermöglichen als bei vielen klassischen REST-Schnittstellen. Statt mehrere Endpunkte für unterschiedliche Ressourcen bereitzustellen, stellt ein GraphQL-System typischerweise nur einen zentralen Endpunkt bereit, über den Clients genau die Daten anfordern können, die sie benötigen.
Bei GraphQL beschreibt der Client in einer Anfrage die gewünschte Datenstruktur. Der Server liefert daraufhin eine Antwort, die dieser Struktur möglichst genau entspricht. Dadurch können unnötige Datenübertragungen reduziert und mehrere zusammenhängende Informationen in einer einzigen Anfrage abgefragt werden.
Ein wesentliches Merkmal ist, dass nicht der Server starr vorgibt, welche Datenform in einem bestimmten Endpunkt zurückgegeben wird, sondern der Client die Auswahl der Felder steuert.
Eine typische GraphQL-Abfrage könnte so aussehen:
query {
user(id: "42") {
name
email
posts {
title
}
}
}
Die Antwort könnte dann folgendermaßen aussehen:
{
"data": {
"user": {
"name": "Max Mustermann",
"email": "max@example.com",
"posts": [
{ "title": "Einführung in GraphQL" },
{ "title": "APIs im Vergleich" }
]
}
}
}
Der Client erhält nur die angeforderten Felder name, email und posts.title.