Zum Inhalt springen
Zum Hauptinhalt springen
Grundlagen

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

1

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.

2

Shopify Storefront API: Merchants nutzen GraphQL, um Shop-Daten (Produkte, Collections, Checkout) flexibel in Custom-Frontends zu integrieren.

3

Headless CMS: Contentful und Strapi bieten GraphQL-APIs, über die Frontends genau die Content-Felder abrufen, die sie für eine Seite benötigen.

4

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?

GraphQL wenn: komplexe, verschachtelte Datenmodelle, verschiedene Clients mit unterschiedlichen Datenbedürfnissen (Web, Mobile), oder wenn Over-/Underfetching ein Problem ist. REST wenn: einfache CRUD-APIs, starke Caching-Anforderungen, File-Downloads/-Uploads, oder wenn das Team keine GraphQL-Erfahrung hat. Viele Systeme nutzen beides: REST für einfache Operationen, GraphQL für komplexe Datenabfragen.

Ist GraphQL schneller als REST?

Nicht per se. GraphQL reduziert die Anzahl der HTTP-Requests (ein Query statt mehrerer REST-Calls) und die übertragene Datenmenge. Auf der Server-Seite kann GraphQL ohne Optimierung (DataLoader, Caching) langsamer sein, da Resolver flexibel Daten laden. Die gefühlte Performance ist oft besser, weil der Client genau die benötigten Daten in einem Request bekommt.

Wie schütze ich eine GraphQL-API?

Wichtige Maßnahmen: Query Depth Limiting (maximale Verschachtelungstiefe), Query Complexity Analysis (Kosten pro Feld), Rate Limiting pro Client, Persisted Queries (nur vorab registrierte Queries zulassen), Authentifizierung per JWT/OAuth und Field-Level-Autorisierung (wer darf welche Felder sehen). Introspection in Produktion deaktivieren, um das Schema nicht öffentlich zu machen.

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.

Nächster Schritt

Lassen Sie uns kurz klären, was für Ihr Projekt sinnvoll ist.

In 30 Minuten klären wir Scope, Risiken und den sinnvollsten nächsten Schritt für Ihr Vorhaben.

30 Min. Strategiegespräch – 100% kostenlos & unverbindlich

Was ist GraphQL? API-Abfragesprache erklärt