Kurs
APIs sind das Rückgrat moderner Web- und Mobile-Apps. Fast jede App auf deinem Smartphone und jede Website, die du besuchst, nutzt APIs, um die Daten auf dem Bildschirm abzurufen und mit ihnen zu interagieren.
REST und GraphQL gehören zu den gängigsten Paradigmen für das Design von APIs. In diesem Guide schauen wir uns die zentralen Unterschiede, Vorteile und typische Einsatzszenarien an, damit du für dein Projekt die passende Herangehensweise wählen kannst.
Moment mal, was ist eigentlich eine API?
Wenn das Konzept einer API (Application Programming Interface) für dich neu ist, schau dir unseren Kurs Streamlined Data Ingestion with Pandas an. Du lernst dort, wie Anwendungen per API mit anderen Programmen kommunizieren – und umgekehrt –, ohne die Details der jeweiligen internen Funktionsweise zu kennen. Der Kurs macht dich mit den Regeln und Protokollen vertraut, die Anwendungen für Anfragen und Datenaustausch nutzen.
Was ist REST?
REST (Representational State Transfer) ist ein Architekturstil, der seit den frühen 2000ern für Webservices genutzt wird. Er definiert eine Reihe von Prinzipien und Einschränkungen, um skalierbare, zustandslose APIs zu entwickeln. REST-APIs (auch RESTful APIs) sind leichtgewichtig und können in jeder Sprache oder Plattform verwendet werden, die HTTP unterstützt.
Wenn du neu bei REST-APIs bist, gewöhne dich am besten zuerst daran, mit ihnen zu arbeiten, bevor du eigene entwickelst. So bekommst du ein Gefühl dafür, wie sie funktionieren und was Best Practices sind. Schau dir zum Start Intermediate Importing Data in Python oder Intermediate Importing Data in R an. Beide Kurse enthalten Kapitel zu HTTP-Requests, Web-Scraping und anderen spannenden Themen.
Zentrale Konzepte von REST-APIs
Lass uns die Grundideen von REST durchgehen.
Zustandslosigkeit
Jede Interaktion zwischen Client und Server ist unabhängig. Der Server speichert zwischen Anfragen keine sitzungsbezogenen Daten zum Client. Das heißt, jede Anfrage muss alle Informationen enthalten, die nötig sind, um sie zu verstehen und zu verarbeiten.
Ressourcenorientiert
Jedes Datenelement oder jede Funktionalität wird als Ressource behandelt, die über einen eindeutigen Identifikator – typischerweise eine URI (Uniform Resource Identifier) – identifiziert und manipuliert werden kann.
In einer E‑Commerce-Anwendung könnten Ressourcen zum Beispiel Kundinnen und Kunden, Produkte, Bestellungen usw. sein. Jede Ressource ist über eine eindeutige URI auffindbar, also eine Art Adresse, unter der sie erreichbar ist. Zum Beispiel:
-
/productskönnte die Gesamtheit aller Produkte bezeichnen. -
/products/123könnte auf ein konkretes Produkt mit der ID123verweisen.
HTTP-Methoden
RESTful APIs verwenden in der Regel Standard-HTTP-Methoden, um Operationen auf Ressourcen auszuführen:
-
GET: Daten vom Server abrufen (z. B. eine Produktliste). -
POST: Daten an den Server senden (z. B. ein neues Produkt anlegen). -
PUT: Eine bestehende Ressource aktualisieren (z. B. Produktdetails ändern). -
DELETE: Eine Ressource entfernen (z. B. ein Produkt löschen).
Eine typische GET-Anfrage sieht so aus:

Beispiel für REST-Anfrage und -Antwort. Bild: Autorin/Autor.
REST-APIs verwenden außerdem standardisierte HTTP-Statuscodes, um Fehler, Erfolge und andere Antworten zu kommunizieren. Und ja, Status 418 I’m a teapot gibt es wirklich!
Datenformate
Eine RESTful API kann verschiedene Formate zur Darstellung und zum Austausch von Daten nutzen, darunter JSON, XML, HTML, Klartext, YAML und CSV.
Was ist GraphQL?
GraphQL ist eine Open-Source-Abfragesprache und -Laufzeitumgebung für APIs, mit der Clients genau die Daten anfordern können, die sie benötigen – nicht mehr und nicht weniger. Ursprünglich wurde es 2012 intern bei Meta (früher Facebook) entwickelt, um das Daten-Fetching für Mobile-Apps zu optimieren, und 2015 öffentlich freigegeben.
Zentrale Konzepte von GraphQL-APIs
Schauen wir uns die wichtigsten Ideen hinter GraphQL an.
Client-spezifische Abfragen
Bei GraphQL definiert der Client die Struktur der Antwort, indem er in der Abfrage genau die benötigten Felder angibt. So fordert der Client nur die wirklich relevanten Daten an und vermeidet Overfetching (zu viele Daten) und Underfetching (zu wenige Daten).
Eine Abfrage, die die Details eines Users abruft, könnte in GraphQL so aussehen:

Beispiel für GraphQL-Anfrage und -Antwort. Bild: Autorin/Autor.
Queries vs. Mutations
Während Queries zum Lesen von Daten dienen, werden Mutations verwendet, um Daten zu schreiben oder zu ändern. Mutations in GraphQL entsprechen funktional den Operationen POST, PUT und DELETE in REST.
Ein einzelner Endpunkt
Im Gegensatz zu REST-APIs, die oft mehrere Endpunkte für verschiedene Ressourcen haben, stellt eine GraphQL-API in der Regel einen einzigen Endpunkt bereit. Dieser verarbeitet alle Queries und Mutations und vereinfacht so die Interaktion für Clients.
Streng typisiertes Schema
GraphQL-APIs werden durch ein Schema definiert – eine streng typisierte Beschreibung der verfügbaren Datenmodelle und ihrer Beziehungen. Dieses Schema dient als Vertrag zwischen Client und Server und stellt sicher, dass die zurückgegebenen Daten zur Anfrage passen und den erwarteten Typen entsprechen.
Introspection
Das GraphQL-Schema ist selbstdokumentierend. Über Introspection können Clients das Schema selbst abfragen und die verfügbaren Typen, Queries, Mutations und Subscriptions entdecken – das erleichtert das Erkunden und Verstehen der API.
Echtzeitdaten
GraphQL unterstützt Echtzeit-Updates über Subscriptions. Damit erhalten Clients Benachrichtigungen, sobald sich relevante Daten ändern – ideal für Anwendungen wie Chat-Apps oder Live-Feeds.
Wichtige Unterschiede zwischen GraphQL und REST
Die folgende Tabelle fasst die wichtigsten Unterschiede zwischen GraphQL- und REST-APIs zusammen.
| Aspekt | REST | GraphQL |
|---|---|---|
| Charakter | Architektonisch | Abfragesprache |
| Datenabruf | Mehrere Endpunkte für verschiedene Ressourcen (/products/123, /users/userA usw.) | Ein einzelner Endpunkt mit flexiblen Abfragen. |
| Versionierung | Typischerweise per URL versioniert (z. B. /api/v1/). | Keine Versionierung; Änderungen erfolgen durch Weiterentwicklung des Schemas bei Wahrung der Kompatibilität. |
| Datentypen | Nicht strikt definiert; Clients können unterschiedliche Datenformate erhalten. | Streng typisiertes Schema, das Struktur und Typen explizit festlegt. |
| Fehlerbehandlung | HTTP-Statuscodes signalisieren Fehler. | Fehler im Response-Body; HTTP-Statuscodes werden weiterhin genutzt. |
Vorteile und Nachteile von GraphQL und REST
Wie so oft gibt es bei beiden Lösungen Stärken und Schwächen.
| API-Typ | Vorteile | Nachteile |
|---|---|---|
| REST | - Leicht zu lernen: Entwicklern mit Web-Erfahrung vertraut. - Ausgereifte Tools: Umfangreiche Doku und Security-Praktiken (OAuth, API-Keys). |
- Over-/Underfetching: Kann zu ineffizientem Datenabruf führen. - Versionierung: Oft mehrere API-Versionen nötig. - Keine nativen Echtzeit-Updates: Zusätzliche Technik wie WebSockets erforderlich. |
| GraphQL | - Effizienter Datenabruf: Eine Anfrage liefert genau die benötigten Daten. - Selbstdokumentierend: Das Schema dient automatisch als aktuelle Dokumentation. - Echtzeit-Updates: Unterstützt Subscriptions für sofortige Synchronisierung. |
- Hohe Einstiegshürde: Komplexer zu erlernen. - Caching-Komplexität: Standard-HTTP-Caching greift kaum; individuelles Caching nötig. - Sicherheitsrisiken: Flexible Abfragen können zu unbeabsichtigter Datenoffenlegung führen. |
GraphQL oder REST auswählen

Die Entscheidung zwischen REST und GraphQL hängt komplett von den Anforderungen deines Projekts ab. Vermutlich hast du nach dem letzten Abschnitt schon ein Gefühl dafür, aber als Faustregel gilt: Nutze REST, wenn du Folgendes hast:
- Einfache Datenmodelle
- Anwendungen mit hohem Caching-Bedarf.
- Teams, die mit REST-Konventionen vertraut sind.
- Bedarf an vorhersehbaren, standardisierten Antworten.
Und setze GraphQL ein, wenn du es mit Folgendem zu tun hast:
- Komplexe Datenmodelle mit verschachtelten Beziehungen.
- Anwendungen mit flexiblen, dynamischen Abfragen.
- Schnelle Iteration bei weniger Backend-Anpassungen.
- Echtzeit-Updates.
REST und GraphQL lassen sich auch in hybriden Lösungen kombinieren. So profitierst du von einfachen, gut definierten REST-Endpunkten und gleichzeitig von der Flexibilität von GraphQL für komplexere Datenabfragen. In einer E‑Commerce-App könntest du zum Beispiel REST für Authentifizierung und Registrierung nutzen, um von etablierten Sicherheitspraktiken wie OAuth zu profitieren, und GraphQL einsetzen, um verschachtelte, komplexe Informationen wie Produktdetails, Kategorien und Bewertungen abzurufen.
Fazit
Kurz gesagt: Sowohl GraphQL als auch REST haben Stärken und Schwächen und eignen sich für unterschiedliche Szenarien. Die Wahl sollte sich an den Anforderungen deines Projekts und der Komplexität deiner Daten orientieren.
Beide Tools machen außerdem Spaß und vermitteln viel über Daten. Wenn du die Gelegenheit hast, probiere sie einfach mal aus!
Und wenn du nach der Lektüre weißt, welches Tool du einsetzen willst, bist du bereit für den nächsten Schritt! Lies unseren Blogpost Mastering API Design: Essential Strategies for Developing High-Performance APIs, um zu lernen, wie du eigene APIs entwirfst.

Ich bin ein produktorientierter technischer Leiter, der sich darauf spezialisiert hat, Start-ups in der Frühphase vom ersten Prototyp bis zur Marktreife und darüber hinaus zu entwickeln. Ich bin unendlich neugierig darauf, wie Menschen Technologie nutzen, und ich liebe es, eng mit Gründern und funktionsübergreifenden Teams zusammenzuarbeiten, um mutige Ideen zum Leben zu erwecken. Wenn ich nicht gerade Produkte entwickle, bin ich auf der Suche nach Inspiration in neuen Ecken der Welt oder lasse im Yogastudio Dampf ab.
Häufig gestellte Fragen
Kann ich einfach von REST zu GraphQL oder umgekehrt migrieren?
Darauf gibt es leider keine kurze Antwort. Es hängt stark von den Anforderungen deines Projekts ab – der Aufwand kann sehr gering oder sehr hoch sein. Von REST zu GraphQL: Du musst ein GraphQL-Schema entwerfen, REST-Endpunkte in GraphQL-Queries und -Mutations überführen und die Backend-Logik anpassen. Von GraphQL zu REST: Das bedeutet, mehrere REST-Endpunkte zu erstellen, Methoden für den Datenabruf anzupassen sowie Versionierungs- und Caching-Strategien zu implementieren.
Welche Tools und Bibliotheken gibt es für die Arbeit mit GraphQL und REST?
Für REST gibt es zahlreiche etablierte Bibliotheken und Frameworks wie Express.js, Django REST framework, Flask-RESTful und Spring Boot. Sie bieten umfassende Unterstützung für den Aufbau und die Nutzung von RESTful APIs. Für GraphQL sind Apollo Server, GraphQL.js, Relay und Graphene (für Python) beliebt. Diese Libraries unterstützen die Schemadefinition, die Ausführung von Abfragen und die Client-Server-Kommunikation.
Gibt es neben REST und GraphQL noch andere API-Design-Paradigmen?
Ja, neben REST und GraphQL gibt es weitere API-Design-Paradigmen wie SOAP (Simple Object Access Protocol) und gRPC (gRPC Remote Procedure Call). SOAP ist ein Protokoll, das XML für die Nachrichtenformatierung nutzt und stark auf Webservice-Standards aufbaut – geeignet für Enterprise-Anwendungen mit hohen Anforderungen an Sicherheit und Transaktionssicherheit. gRPC (entwickelt von Google) verwendet HTTP/2 für den Transport, Protocol Buffers für die Serialisierung und bietet Performance-Vorteile wie Multiplexing, bidirektionales Streaming und integrierte Codegenerierung.
Können REST und GraphQL in einer einzelnen Anwendung zusammen genutzt werden?
Ja, REST und GraphQL lassen sich in einem hybriden Ansatz kombinieren. Beispielsweise kann REST einfachere, klar definierte Endpunkte wie Authentifizierung und Registrierung übernehmen – unter Nutzung etablierter Sicherheitspraktiken. GraphQL eignet sich dann für komplexere Datenabrufe, etwa verschachtelte oder verknüpfte Informationen.
Was sind typische Anwendungsfälle für die Echtzeit-Updates von GraphQL?
Echtzeit-Updates mit GraphQL sind besonders nützlich für Anwendungen, die sofortige Synchronisierung erfordern, z. B. Chat-Anwendungen, Live-Sportticker, Börsenkurs-Ticker, kollaboratives Dokumenten-Editing und alle Szenarien, in denen Datenänderungen unmittelbar an Clients gepusht werden müssen.
