GraphQL
Von Facebook/Meta entwickelte Abfragesprache für APIs, die präzise Datenabfragen ermöglicht und Over-/Underfetching im Vergleich zu REST reduziert.
GraphQL löst ein fundamentales Problem von REST-APIs: Clients bekommen entweder zu viele Daten (Overfetching) oder zu wenige (Underfetching, erfordert mehrere Requests). Mit GraphQL fragt der Client exakt die Daten an, die er braucht – nicht mehr, nicht weniger. Seit der Open-Source-Veröffentlichung durch Facebook 2015 wird GraphQL von GitHub, Shopify, Twitter und Tausenden weiteren Unternehmen eingesetzt.
Was ist GraphQL?
GraphQL ist eine Abfragesprache und Runtime für APIs, die von Facebook/Meta entwickelt und 2015 als Open Source veröffentlicht wurde. Im Gegensatz zu REST, das feste Endpunkte mit vordefinierten Datenstrukturen bereitstellt, bietet GraphQL einen einzigen Endpunkt, an dem der Client die exakte Datenstruktur seiner Abfrage definiert. Ein GraphQL-Schema definiert die verfügbaren Typen (User, Product, Order), ihre Felder und Beziehungen. Clients senden Queries (Lesen), Mutations (Schreiben) und Subscriptions (Echtzeit-Updates) an den Server. Die GraphQL-Spezifikation ist sprachunabhängig – Implementierungen existieren für JavaScript, Python, Java, Go und viele weitere Sprachen.
Wie funktioniert GraphQL?
Der Client sendet eine GraphQL-Query als JSON an den Server: { user(id: 42) { name, email, orders { total } } }. Der Server validiert die Query gegen das Schema, führt Resolver-Funktionen für jedes angefragte Feld aus und liefert genau die angeforderte Datenstruktur zurück. Das Schema definiert Typen (type User { id: ID!, name: String!, email: String!, orders: [Order!]! }) und der Server implementiert Resolver, die die Daten aus Datenbanken, APIs oder anderen Quellen laden. DataLoader batcht und cached Datenbankanfragen, um das N+1-Problem zu vermeiden. Subscriptions nutzen WebSockets für Echtzeit-Updates.
Praxisbeispiele
GitHub API v4: GitHub bietet neben der REST API v3 eine GraphQL API v4, die es ermöglicht, Repository-Daten, Issues, Pull Requests und Commits in einer einzigen Abfrage zu laden.
Shopify Storefront API: Merchants nutzen GraphQL, um Shop-Daten (Produkte, Collections, Checkout) flexibel in Custom-Frontends zu integrieren.
Headless CMS: Contentful und Strapi bieten GraphQL-APIs, über die Frontends genau die Content-Felder abrufen, die sie für eine Seite benötigen.
Mobile App Backend: Eine App lädt auf dem Home-Screen Nutzerdaten, letzte Bestellungen und Empfehlungen in einer einzigen GraphQL-Query statt 3 separaten REST-Calls.
Typische Anwendungsfälle
Mobile Apps: Minimierte Datenübertragung durch präzise Abfragen – besonders wichtig bei langsamen Verbindungen
Microservices-Gateway: GraphQL als einheitliche API-Schicht vor mehreren Backend-Services
E-Commerce: Flexible Produktabfragen mit variablen Attributen, Varianten und Beziehungen
Content-Delivery: Headless CMS mit GraphQL für flexible Frontend-Anbindung
Dashboard und Analytics: Komplexe, verschachtelte Datenabfragen für Reporting-UIs
Vorteile und Nachteile
Vorteile
- Kein Over-/Underfetching: Client bekommt exakt die benötigten Daten – nicht mehr, nicht weniger
- Ein Endpunkt: Alle Daten über eine einzige URL abrufbar, keine Endpunkt-Explosion wie bei REST
- Starke Typisierung: Das Schema definiert alle Typen und Beziehungen – selbstdokumentierend
- Versionierungsfrei: Schema-Erweiterungen sind abwärtskompatibel, keine API-Versionen (v1, v2) nötig
- Introspection: Clients können das Schema automatisch abfragen – IDE-Support und Code-Generierung
Nachteile
- Caching-Komplexität: HTTP-Caching funktioniert nicht out-of-the-box wie bei REST (alles POST)
- Sicherheit: Zu komplexe oder tiefe Queries können den Server überlasten (Query Depth Limiting nötig)
- Lernkurve: Schema-Design, Resolver, DataLoader und Performance-Optimierung erfordern Expertise
- Overkill für einfache APIs: Für CRUD-APIs mit wenigen Endpunkten ist REST einfacher
- File Upload: GraphQL hat keine native File-Upload-Spezifikation – erfordert Workarounds
Häufig gestellte Fragen zu GraphQL
Wann GraphQL und wann REST?
Ist GraphQL schneller als REST?
Wie schütze ich eine GraphQL-API?
Verwandte Begriffe
GraphQL in Ihrem Projekt einsetzen?
Wir beraten Sie gerne zu GraphQL und finden die optimale Lösung für Ihre Anforderungen. Profitieren Sie von unserer Erfahrung aus über 200 Projekten.