Go to blue arrow
back to Tech Blog
Entwicklung

Written by:

Joao Inez
Joao Inez

,

Webentwickler

Last Published:

06. August 2026

Min Read

GraphQL vs. REST (2026): Die Wahl der richtigen API

JavaScript-Code in einem Texteditor mit dunklem Design und einer sichtbaren Dateistruktur auf der linken Seite.

Wenn Sie mit der Entwicklung einer API beginnen, denken Sie sofort an REST. Es ist seit zwei Jahrzehnten der Standard, und Standards sind bequem. Doch GraphQL taucht immer häufiger auf, und GraphQL vs. REST ist mittlerweile eine der ersten architektonischen Entscheidungen, die ein Produktteam treffen muss.

Kommen wir also direkt zum Punkt. Entscheiden Sie sich für GraphQL, wenn viele verschiedene Clients unterschiedliche Datenstrukturen benötigen. Wählen Sie REST, wenn Caching, Monitoring und betriebliche Einfachheit wichtiger sind als Abfrageflexibilität. Die meisten Unternehmen setzen am Ende beides ein, und das ist auch völlig in Ordnung.

Stellen Sie es sich wie eine Küche vor. REST serviert jedem Tisch dasselbe Menü; wenn Sie eine Beilage möchten, bestellen Sie einen zweiten Gang. GraphQL gibt Ihnen den Bestellblock in die Hand und lässt Sie genau notieren, was Sie möchten. Das Essen ist dasselbe, und die Küche ist dieselbe. Was sich ändert, ist, wer den Teller zusammenstellt und was diese Entscheidung Sie später kostet.

Genau darauf liegt der Schwerpunkt dieses Artikels: die Funktionen, die tatsächlichen Unterschiede sowie die Kosten, Risiken und Auswirkungen auf die Bereitstellung, die mit der Wahl des einen oder anderen Ansatzes verbunden sind.

Die wichtigsten Erkenntnisse

  • GraphQL löst das Problem von Over-Fetching und Under-Fetching, indem der Client genau die Felder anfordern kann, die er von einem einzigen Endpunkt benötigt. Der eigentliche Vorteil liegt in der Entwicklungsgeschwindigkeit für viele verschiedene Clients, nicht in der reinen Abfragegeschwindigkeit.
  • REST bietet HTTP-Caching, Statuscode-Monitoring und begrenzte Kosten pro Endpunkt von Haus aus. Deshalb bleibt es der Standard für öffentliche und leselastige APIs.
  • Die ehrliche Entscheidung dreht sich um Ihre Clients, Ihr Team und Ihren Betrieb, nicht darum, welche Technologie moderner aussieht. Die meisten IT-Landschaften nutzen beides, oft in Form einer GraphQL-Schicht vor bestehenden REST-Diensten.
  • Mit der Ausgabe der GraphQL-Spezifikation vom September 2025, der ersten vollständigen Ausgabe seit Oktober 2021, wurden Schema Coordinates, OneOf-Eingabeobjekte und Beschreibungen für ausführbare Dokumente hinzugefügt – Neuerungen, die gezielt auf Codegenerierung sowie LLM- oder Agenten-Tools ausgerichtet sind.
blue arrow to the left
Imaginary Cloud logo

Was ist GraphQL?

GraphQL ist eine Abfragesprache für APIs, die eine deklarative Datenabfrage ermöglicht. Einfach ausgedrückt: Der Client gibt genau an, welche Daten er benötigt, und erhält exakt diese zurück. Zudem lassen sich APIs damit im Laufe der Zeit einfacher weiterentwickeln. Das Verhalten ist in einer öffentlichen Spezifikationfestgelegt, weshalb es sich um einen echten Standard und nicht um das Produkt eines einzelnen Anbieters handelt.

Drei Dinge, die es nicht ist, da diese drei Punkte in jedem ersten Meeting zur Sprache kommen.

  • Es hat nichts mit Datenbanken zu tun. Es ist keine Alternative zu SQL und kein neuer Object-Relational Mapper (ORM), also jener Schicht, die zwischen Datenbanktabellen und den Objekten, mit denen Ihr Code arbeitet, vermittelt.
  • Es ist kein Ersatz für REST. Es ist eine Alternative. Sie müssen sich nicht für das eine oder das andere entscheiden; beide können problemlos im selben Projekt koexistieren, was in den meisten Systemen ohnehin bereits der Fall ist.
  • Es ist nicht schwer zu lesen. Die Syntax ist an einem Nachmittag erlernt. Die eigentliche Herausforderung liegt ganz woanders: beim Caching, der Autorisierung und den Abfragekosten – genau das ist das Thema des Großteils dieses Artikels.

Wer hat GraphQL entwickelt?

GraphQL wurde 2012 intern bei Facebook (heute Meta) entwickelt, bevor es im September 2015 als Open Source veröffentlicht wurde. Mitbegründer waren Lee Byron, Nick Schrock und Dan Schafer während ihrer Arbeit an den mobilen Anwendungen von Facebook. Behalten Sie diesen Kontext im Hinterkopf, denn er erklärt die meisten der folgenden Designentscheidungen.

Die Absicht, das Projekt in eine anbieterneutrale GraphQL Foundation unter dem Dach der Linux Foundation zu überführen, wurde im November 2018 angekündigt, und die Foundation wurde 2019 offiziell gegründet.

Entscheidend ist, dass die Spezifikation nicht auf dem Stand von 2018 eingefroren ist. Die Ausgabe vom September 2025, die erste vollständige Ausgabe seit Oktober 2021, führte Schema-Koordinaten (maschinen- und menschenlesbare Adressen für Schema-Elemente), OneOf-Eingabeobjekte (sich gegenseitig ausschließende Eingaben im Schema) sowie Beschreibungen für ausführbare Dokumenteein. Einige dieser Neuerungen wurden speziell für Codegen-Tools und KI-gestützte Agenten entwickelt, was besonders wichtig ist, wenn Ihre API zunehmend von KI-Tools und nicht mehr nur von Menschen genutzt wird.

Welche Unternehmen nutzen GraphQL

GraphQL wird von Teams jeder Größe in unterschiedlichsten Umgebungen und Sprachen eingesetzt. Zu den bekanntesten Anwendern zählen Facebook, GitHub, Pinterest, Shopify, Airbnb und Netflix.

Eine GraphQL-Abfrage im Kontext

Bevor wir Vergleiche anstellen, sehen Sie hier eine einfache GraphQL-Abfrage, die einen Benutzer sowie dessen Namen und Alter abruft:

{
  user(id: "1") {
    name
    age
  }
}

Und die entsprechende JSON-Antwort, die Sie erhalten:

{
  "data": {
    "user": {
      "name": "João Inez",
      "age": 29
    }
  }
}

Beachten Sie, dass die Antwort die Abfrage Feld für Feld widerspiegelt. Genau das ist der Kern des deklarativen Ansatzes: Sie schreiben JSON-Objekte ohne die Werte und können bereits vor der Ausführung erkennen, was eine Anfrage zurückgeben wird.

blue arrow to the left
Imaginary Cloud logo

Was ist REST?

REST wurde definiert von Roy Fielding, dem Informatiker, der seine Prinzipien in seiner Doktorarbeit im Jahr 2000.

REST (Representational State Transfer) ist ein Software-Architekturstil, der eine Reihe von Einschränkungen definiert, die einen Webdienst zu einer echten RESTful API machen. Diese Einschränkungen sind:

  • Client-Server-Architektur. Die Belange der Benutzeroberfläche sollten von denen der Datenspeicherung getrennt sein. Wenn Sie das tun, lässt sich Ihre Schnittstelle problemlos auf verschiedenen Plattformen einsetzen – was im Grunde das ganze Versprechen ist.
Diagramm der Client-Server-Architektur mit Anfrage- und Antwortfluss für REST- und GraphQL-APIs.
  • Zustandslosigkeit (Stateless). Ein zustandsloser Server speichert nichts über den Benutzer, der die API aufruft. Er merkt sich nicht, ob dies Ihre erste oder Ihre hundertste Anfrage ist, da jede Anfrage alles enthält, was für ihre Bearbeitung erforderlich ist.
Diagramm von 3 Client-Laptops an einem zentralen Server, das eine zustandslose REST-Architektur zeigt.
  • Cache-Fähigkeit. REST-API-Antworten müssen als cachebar oder nicht cachebar deklariert werden. Ohne diese Deklaration verwenden Clients möglicherweise Daten weiter, die bereits veraltet sind.
  • Mehrschichtiges System (Layered System). Wenn ein Proxy oder Load Balancer zwischen Client und Server geschaltet ist, bleibt die Verbindung zwischen ihnen davon unberührt. Der Client muss zu keinem Zeitpunkt wissen, ob er direkt mit dem Zielserver kommuniziert.
  • Einheitliche Schnittstelle (Uniform Interface). Es sollte eine konsistente Art der Interaktion mit einem bestimmten Server geben, unabhängig vom Gerät oder Anwendungstyp. Die wichtigste Richtlinie: Jede Ressource muss bei Anfragen eindeutig identifiziert werden.

Nimmt man diese fünf Punkte zusammen, erhält man Clients, Vermittler und Ressourcenserver, die alle über eine gemeinsame, cachebare Schnittstelle kommunizieren. Diese Eigenschaft ist die Grundlage für alles, was im weiteren Verlauf dieses Artikels behandelt wird. Da die Schnittstelle einheitlich und adressierbar ist, kann alles, was dazwischen liegt – vom Browser-Cache bis zum Content Delivery Network (CDN) – eine Antwort verarbeiten, ohne deren Inhalt verstehen zu müssen.

blue arrow to the left
Imaginary Cloud logo

Warum wurde GraphQL entwickelt, wenn es bereits REST gibt?

Zwei Gründe bewegten Unternehmen wie Facebook, Netflix und Coursera dazu, nach Alternativen zu suchen:

  • Anfang der 2010er Jahre gab es einen Boom bei der mobilen Internetnutzung, der leistungsschwache Geräte und unzuverlässige Netzwerke mit sich brachte. REST ist für diese Bedingungen nicht optimal.
  • Mit der zunehmenden mobilen Nutzung stieg auch die Anzahl der Front-End-Frameworks und Plattformen, auf denen Client-Anwendungen laufen. Aufgrund der Starrheit von REST wurde es immer schwieriger, eine einzige API zu entwickeln, die den Anforderungen jedes Clients gerecht wurde.

Geht man einen Schritt weiter, liegt der eigentliche Grund in der Struktur der Daten. Die meisten Daten in modernen Web- und Mobilanwendungen sind graphförmig – ein Netzwerk aus miteinander verbundenen Entitäten statt eines Stapels flacher Tabellen. Nachrichtenbeiträge haben Kommentare, und diese Kommentare haben Likes oder Spam-Markierungen, die von Benutzern erstellt oder gemeldet wurden. Diese Daten über ressourcenbasierte Endpunkte abzurufen bedeutet, den Graphen Anfrage für Anfrage zu durchlaufen, was genau so langsam ist, wie es klingt.

Also begann Facebook mit der Entwicklung von GraphQL. Netflix und Coursera arbeiteten zur gleichen Zeit an ihren eigenen Alternativen. Nachdem Facebook GraphQL als Open Source veröffentlicht hatte, stellte Coursera seine eigenen Bemühungen ein und übernahm die neue Technologie. Netflix machte weiter und veröffentlichte später Falcor, eine JavaScript-Bibliothek, die Remote-Daten als einen virtuellen JSON-Graphen modelliert. Falcor wird heute kaum noch weiterentwickelt; betrachten Sie es daher eher als historische Fußnote denn als aktuelle Option.

blue arrow to the left
Imaginary Cloud logo

Ist GraphQL besser als REST?

GraphQL bietet eine Abfragesprache, mit der Clients genau die Daten anfordern können, die sie benötigen. REST basiert auf festen Endpunkten und serverseitig definierten Datenstrukturen. Ob GraphQL „besser“ ist, hängt von Ihren Anforderungen und der benötigten Flexibilität Ihres Projekts ab: GraphQL punktet bei der Client-Flexibilität und der Geschwindigkeit der Frontend-Bereitstellung; REST überzeugt bei Caching, Monitoring und operativer Reife. Amazons eigener Entscheidungsleitfaden für GraphQL betrachtet denselben Zielkonflikt im Hinblick auf die Gesamtbetriebskosten – eine nützliche zweite Meinung, wenn Sie intern eine Wirtschaftlichkeitsrechnung erstellen.

Vergleichsdiagramm der Client-Server-Datenabrufe in GraphQL- vs. REST-Architektur.

Gehen wir ein praktisches Beispiel Punkt für Punkt durch.

Stellen Sie sich vor, Sie haben einen Blog und möchten auf der Startseite alle aktuellen Beiträge anzeigen. Sie müssen die Beiträge abrufen, also würden Sie wahrscheinlich so etwas schreiben:

GET /api/posts

[
  { "id": 1, "title": "GraphQL vs REST", "subtitle": "Choosing an API", "date": "2026-02-21" },
  { "id": 2, "title": "Scaling a mobile back end", "subtitle": "Lessons learned", "date": "2026-02-14" }
]

Aber was ist, wenn Sie auch den Autor benötigen? Es gibt drei Möglichkeiten:

1. Die Autoren von einer anderen Ressource abrufen:

GET /api/posts
GET /api/authors?ids=1,2

[
  { "id": 1, "name": "João Inez" },
  { "id": 2, "name": "Ana Silva" }
]

2. Die Ressource so anpassen, dass sie auch den Autor zurückgibt:

GET /api/posts

[
  {
    "id": 1,
    "title": "GraphQL vs REST",
    "subtitle": "Choosing an API",
    "date": "2026-02-21",
    "author": { "id": 1, "name": "João Inez" }
  }
]

3. Eine Ressource erstellen, die die Beiträge zusammen mit dem Autor zurückgibt:

GET /api/posts-with-authors

[
  {
    "id": 1,
    "title": "GraphQL vs REST",
    "author": { "id": 1, "name": "João Inez" }
  }
]

Jede Option löst das Problem, schafft aber gleichzeitig ein neues. Gehen wir sie nacheinander durch.

Under-fetching

Beim ersten Ansatz, dem Abrufen der Autoren von einer anderen Ressource, benötigen Sie am Ende zwei Serveranfragen statt einer. Skaliert man dies, entstehen immer mehr Anfragen an immer mehr Endpunkte, nur um eine einzige Ansicht zusammenzustellen. Bei einer mobilen Verbindung bedeutet jeder Roundtrip eine Latenz, die der Nutzer direkt spürt.

Mit GraphQL passiert das nicht. Eine Anfrage, keine zusätzlichen Roundtrips:

{
  posts {
    title
    subtitle
    date
    author {
      name
    }
  }
}
{
  "data": {
    "posts": [
      {
        "title": "GraphQL vs REST",
        "subtitle": "Choosing an API",
        "date": "2026-02-21",
        "author": { "name": "João Inez" }
      }
    ]
  }
}

Over-fetching

Der zweite Ansatz, die Ressource so zu ändern, dass sie auch den Autor zurückgibt, löst das unmittelbare Problem elegant. Doch dann entsteht unbemerkt ein neues Problem an einer anderen Stelle Ihrer Anwendung: Over-fetching.

Zurück zu Ihrem Blog. Diesmal haben Sie zusätzlich eine Seitenleiste, die die beliebtesten Beiträge des Monats mit Titeln, Untertiteln und Daten auflistet, und diese nutzt /api/posts Ressource. Sie haben diese Ressource geändert, sodass sie jetzt auch den Autor zurückgibt. Die Seitenleiste benötigt den Autor zwar nicht, aber jeder Client, der diesen Endpunkt aufruft, muss die Daten trotzdem laden.

Für Nutzer mit begrenztem Datenvolumen und langsamen Verbindungen sind unnötige Daten ein echtes Problem. GraphQL ermöglicht es dem Client, genau die benötigten Felder abzufragen und nichts weiter, wodurch dieses Problem gar nicht erst entsteht:

{
  posts(sort: "monthly_top", limit: 5) {
    title
    subtitle
    date
  }
}
{
  "data": {
    "posts": [
      { "title": "GraphQL vs REST", "subtitle": "Choosing an API", "date": "2026-02-21" }
    ]
  }
}

Langsame Frontend-Entwicklung

Das führt uns zum dritten Ansatz: der Erstellung einer Ressource, die Beiträge zusammen mit dem Autor zurückgibt. Endpunkte an den Ansichten Ihres Projekts auszurichten, ist ein durchaus gängiges Muster.

Es löst zwar das oben genannte Problem, verlangsamt aber die Frontend-Entwicklung, da nun jede spezifische Ansicht ihren eigenen Endpunkt benötigt. Sobald ein neues Feld für eine Ansicht erforderlich ist, kommt die Frontend-Arbeit zum Stillstand, bis das Backend-Team das Update bereitstellt. Diesen Koordinationsaufwand unterschätzen Teams immer wieder.

GraphQL gibt dem Client stattdessen den Bestellblock in die Hand. Das Hinzufügen eines Feldes erfordert kein Backend-Release. Sie kommen von hier:

{
  posts {
    title
    author {
      name
    }
  }
}

Zu hier:

{
  posts {
    title
    subtitle
    date
    author {
      name
      avatarUrl
    }
  }
}

Dazwischen ist keine Änderung am Backend erforderlich.

Web- & Mobile-Entwicklungsbanner mit isometrischem Monitor und Smartphone-App mit React-Logo.
blue arrow to the left
Imaginary Cloud logo

Vergleich von GraphQL und REST

DimensionGraphQLREST
DatenabrufClient gibt die Felder an; eine Anfrage liefert genau diese zurückServer definiert die Antwort; verknüpfte Daten erfordern weitere Aufrufe
EndpunkteEin Endpunkt für das gesamte SchemaEin Endpunkt pro Ressource
CachingSelbst gebaut, im Client oder einer Persisted-Query-SchichtKostenlos durch HTTP; funktioniert im Browser und auf CDN-Ebene
Fehlerbehandlung200 OK mit einem Fehler-Array; erfordert GraphQL-fähige ToolsHTTP-Statuscodes, die von jedem Monitoring-Tool verstanden werden
AutorisierungPro Feld oder pro Resolver durchgesetztPro Endpunkt durchgesetzt
VersionierungAdditiv; alte Felder werden als @deprecated markiertExplizit, typischerweise /v1/ zu /v2/
RatenbegrenzungNach Abfragekosten und -tiefe, da die Kosten pro Anfrage variierenNach Anfragen pro Minute, da die Kosten nahezu einheitlich sind
Bester AnwendungsfallVerschiedene Clients an einem einzigen BackendÖffentliche APIs, leseintensiver und gut cachtbarer Datenverkehr

Wo sich GraphQL und REST unterscheiden

Ein kurzer Überblick über die Unterschiede und die jeweiligen Kosten:

  • GraphQL ist eine Sprache und eine Reihe von Tools, die HTTP über einen einzigen Endpunkt nutzen, um Flexibilität und Performance zu optimieren.
  • In GraphQL sind Daten in einem Graphen organisiert und Objekte als Knoten gemäß einem Schema strukturiert.
  • REST ist ein Architekturkonzept für netzwerkbasierte Software und bleibt der Standard für die meisten öffentlichen APIs.
  • GraphQL löst sowohl Over-Fetching als auch Under-Fetching, indem der Client nur die Daten anfordert, die er tatsächlich benötigt.
  • Da der Client die Struktur der Antwort bestimmt, können Front-End-Teams Felder hinzufügen, ohne auf ein Back-End-Release warten zu müssen. Genau hier, und nicht bei der reinen Geschwindigkeit, liegt der tatsächliche Effizienzgewinn.
  • In GraphQL ist die Identität eines Objekts von der Art und Weise getrennt, wie ein Entwickler es abruft. In REST ist der Endpunkt die Identität eines Objekts.
  • In GraphQL veröffentlicht der Server, was verfügbar ist, und der Client entscheidet, was er abruft. In REST wird die Größe der Ressource vom Server definiert.
  • In GraphQL kann eine einzelne Abfrage mehrere Resolver aufrufen – die serverseitigen Funktionen, die die Daten hinter jedem Feld abrufen –, um eine Antwort aus verschiedenen Quellen zusammenzustellen. In REST ruft eine Abfrage normalerweise einen einzigen Route-Handler auf.
  • Da GraphQL den im Schema definierten Beziehungen folgt, können Sie vom Einstiegspunkt aus in einer einzigen Anfrage zu verknüpften Daten navigieren. REST erfordert den Aufruf mehrerer Endpunkte, um zusammengehörige Ressourcen abzurufen.

Wo sich REST und GraphQL ähneln

Wie bereits erwähnt, ersetzt GraphQL REST nicht. Wenn man von den Unterschieden absieht, haben beide viel gemeinsam. Das ist ein Grund, warum die Entscheidung zwischen REST und GraphQL selten ein Entweder-oder ist:

  • Beide werden über HTTP abgerufen, typischerweise mit einer POST- oder GET-Anfrage an eine URL, und beide geben JSON zurück.
  • Beide ermöglichen die Angabe von IDs für Ressourcen.
  • Sowohl GraphQL (Felder) als auch REST (Endpunkte) rufen Funktionen auf dem Server auf.
  • Beide verfügen über Einstiegspunkte in die Daten. In einer GraphQL-API ist die Liste der Felder im Root Query und Mutation -Typen spielen dieselbe Rolle wie die Liste der Endpunkte in einer REST-API. Eine Mutation ist übrigens einfach eine GraphQL-Operation, die Daten schreibt, anstatt sie zu lesen.
  • Beide unterscheiden zwischen dem Lesen und Schreiben von Daten.
blue arrow to the left
Imaginary Cloud logo

Wofür eignet sich GraphQL?

GraphQL wurde für mobile Clients entwickelt und genau dort spielt es seine Stärken nach wie vor aus. Eine App auf dem Smartphone läuft über eine Verbindung, auf die Sie keinen Einfluss haben. Jedes unnötige Feld und jeder zusätzliche Roundtrip führt daher zu Latenzzeiten, die der Nutzer direkt spürt. Erinnern Sie sich an das Beispiel zum Over-Fetching: Die Seitenleiste benötigte drei Felder, aber der angepasste REST-Endpunkt lieferte fünf zurück, einschließlich eines verschachtelten Autoren-Objekts, das in der Ansicht nie gerendert wurde. Multipliziert man das auf einen ganzen Bildschirm und berücksichtigt eine schlechte Netzwerkverbindung, wird das Problem deutlich.

Je mehr Clients Sie über ein Backend bedienen und je stärker sich diese voneinander unterscheiden, desto wichtiger wird dieser Aspekt. Es ist zudem überall dort eine gute Wahl, wo das Frontend schneller iteriert als das Backend, da das Schema Änderungen abfängt, die andernfalls neue Endpunkte erfordern würden.

Dies ist das Szenario, für das wir am häufigsten entwickeln: eine API mit geringer Latenz, die mehrere Clients über ein einziges Backend bedient. Bei TrustPortalhaben wir beispielsweise die Web- und Mobilanwendung gemeinsam mit den dahinterliegenden API-Diensten bereitgestellt – optimiert auf niedrige Latenz und so konzipiert, dass sie für eine internationale Nutzerbasis in vielen Sprachen funktionieren. Genau in solchen Situationen zahlt sich eine einheitliche, auf den Client zugeschnittene Datenschicht aus, egal ob Sie diese über GraphQL oder eine sorgfältig konzipierte REST-API anbinden.

blue arrow to the left
Imaginary Cloud logo

Wofür eignet sich REST?

GraphQL ist ein mächtiges Werkzeug, aber kein vollständiges. Wenn einer der folgenden Punkte für Ihr Projekt wichtig ist, sollten Sie REST in Betracht ziehen.

REST bietet HTTP-Caching frei Haus

Jeder Browser verfügt über einen HTTP-Cache, der das erneute Abrufen von Ressourcen vermeidet und erkennt, wenn zwei Ressourcen identisch sind. Das kostet Sie nichts, jeder versteht es und es funktioniert sowohl im CDN als auch im Browser.

GraphQL besitzt keine global eindeutige Kennung für ein Objekt auf URL-Ebene, da jede Anfrage über denselben Endpunkt erfolgt, meist per POST. Um Caching zu nutzen, müssen Sie es selbst implementieren – entweder im Client (Apollo Client, Relay, urql) oder in einer Ebene für persistente Abfragen vor dem Server. Das bedeutet echten Arbeitsaufwand und eine zusätzliche betriebliche Komplexität. Eine REST-API nutzt das Protokoll direkt und lässt sich hervorragend mit Caches wie Redis oder Memcached kombinieren.

REST meldet Fehler über HTTP-Statuscodes

Mit REST können Sie ein Monitoring-System auf Basis von Statuscodes aufbauen. Ein 500er-Fehler ist ein Vorfall, ein 404 bedeutet, dass eine Ressource fehlt, und ein 200er-Status bedeutet, dass alles in Ordnung ist. GraphQL bietet Ihnen nichts davon, da es für fast alles – einschließlich Fehler – einen 200 OK zurückgibt. Ein typischer GraphQL-Fehler sieht so aus:

{
  "errors": [
    {
      "message": "Cannot query field \"avatarURL\" on type \"Author\".",
      "locations": [{ "line": 5, "column": 7 }],
      "path": ["posts", 0, "author"]
    }
  ],
  "data": null
}

Das Handhaben und Überwachen verschiedener Fehlerszenarien anhand dieser Antwort ist deutlich aufwendiger, und Standard-Alerting-Systeme, die auf HTTP-Statuscodes basieren, erkennen den Fehler überhaupt nicht. Sie benötigen eine GraphQL-spezifische Instrumentierung, bevor Sie auch nur in die Nähe einer Produktionsumgebung gehen.

REST hat begrenzte Kosten pro Endpunkt

Mit GraphQL können Sie jederzeit genau das abfragen, was Sie möchten – diese Freiheit hat jedoch sicherheitsrelevante Konsequenzen. Wenn ein Angreifer eine komplexe, verschachtelte Abfrage sendet, um Ihren Server oder Ihre Datenbank zu überlasten, und Ihr Server keine Schutzmaßnahmen besitzt, sind Sie anfällig für Denial-of-Service-Angriffe (DoS). Das OWASP GraphQL Cheat Sheet ist hierzu eindeutig: Da Abfragetiefe und -umfang standardmäßig unbegrenzt sind, müssen Sie selbst entsprechende Limits setzen. Ein REST-Endpunkt hat konstruktionsbedingt begrenzte Kosten. Eine GraphQL-Abfrage hingegen nicht.

blue arrow to the left
Imaginary Cloud logo

Sicherheit, Versionierung und Betrieb

Die meisten Vergleiche enden beim Over-fetching. Dabei sind es die operativen Unterschiede, die tatsächlich über den Erfolg entscheiden, sobald die API live ist und jemand für den Support zuständig ist.

Authentifizierung und Autorisierung

Die Authentifizierung ist bei beiden Ansätzen nahezu identisch: Ein Token im Header wird pro Anfrage validiert. Bei der Autorisierung sieht das anders aus. In REST liegen die Berechtigungsprüfungen am Endpunkt, und man kann anhand der Routentabelle ablesen, wer was aufrufen darf. In GraphQL kann eine Abfrage mehrere Typen in einer einzigen Anfrage durchlaufen, daher müssen Berechtigungen pro Feld oder pro Resolver erzwungen werden. Das bedeutet mehr Code, und dieser Code muss lückenlos sein: Ein einziges ungeschütztes Feld in einem verschachtelten Typ gibt die Daten preis, die der darüber liegende Endpunkt eigentlich schützen sollte. OWASP empfiehlt, die Autorisierung sowohl auf Knoten als auch auf Kanten durchzusetzen genau deshalb, weil diese Lücke so leicht übersehen wird.

Ratenbegrenzung und Abfragetiefe

Eine Ratenbegrenzung nach Anfragen pro Minute funktioniert bei REST, da die Anfragen dort in etwa gleich viel kosten. Bei GraphQL funktioniert das nicht, da eine Anfrage trivial sein kann, während die nächste die halbe Datenbank verknüpft. GraphQL-APIs benötigen Limits für die Abfragetiefe, Komplexitätsbewertungen, die jedem Feld Kosten zuweisen, und oft persisted queries, die in der Produktion nur einen vorab genehmigten Satz an Operationen zulassen. Planen Sie diesen Aufwand jetzt ein, anstatt ihn erst während eines Vorfalls zu entdecken.

Versionierung

REST versioniert über die URL, von /v1/ zu /v2/, was explizit und leicht zu kommunizieren ist, aber dazu führt, dass beide Versionen gewartet werden müssen. GraphQL umgeht die Versionierung: Man fügt Felder hinzu und markiert alte mit der @deprecated -Direktive als veraltet, während die Clients in ihrem eigenen Tempo migrieren. Das ist bei einem Schema, das viele Clients bedient, äußerst nützlich, bringt jedoch eine Verpflichtung mit sich: Verfolgen Sie die Feldnutzung, sonst werden diese veralteten Felder niemals entfernt und das Schema wächst unendlich weiter.

Das N+1-Problem

Da ein GraphQL-Resolver pro Feld ausgeführt wird, kann eine Abfrage für 50 Beiträge samt deren Autoren 51 Datenbankabfragen auslösen: eine für die Beiträge und jeweils eine pro Autor. Das ist das N+1-Problemund der häufigste Grund dafür, dass eine brandneue GraphQL-API am Ende langsamer ist als die REST-API, die sie ersetzt hat. Die Lösung ist Batching, also das Zusammenfassen dieser 50 Autoren-Abfragen in einem einzigen Datenbankaufruf, üblicherweise mit DataLoader oder einer vergleichbaren Bibliothek. Bei nennenswerten Datenmengen ist dies unverzichtbar. Auch REST ist nicht vor dem N+1-Problem gefeit, doch da das Abfragemuster hinter einem Endpunkt fest definiert ist, tritt es bereits in der Entwicklung auf und nicht erst unter Produktionslast.

blue arrow to the left
Imaginary Cloud logo

GraphQL-Föderation und die Composite Schema Specification

Seit den Anfängen von GraphQL hat sich eine Sache grundlegend geändert: Man baut heute nur noch selten einen monolithischen Graphen. Föderation ermöglicht es mehreren Teams, jeweils einen eigenen Subgraphen zu verwalten, den ein Gateway zu einem einzigen Graphen zusammenfügt. Der Client fragt diesen ab, als wäre es eine einzige API. Wenn Ihr Unternehmen so groß ist, dass sich die Frage „GraphQL vs. REST“ eigentlich darauf reduziert, wie viele Teams eine kohärente API bereitstellen können, ist dies das Modell, das Sie in Betracht ziehen sollten.

Auch hier standardisiert sich das Ökosystem. Die Arbeit der GraphQL Foundation an der Composite Schema Specification zielt darauf ab, Multi-Service-Graphen über Gateways hinweg portabel zu machen, anstatt sie an die Implementierung eines einzelnen Anbieters zu binden. Dies ist in jedem Vergleich für 2026 erwähnenswert, da es die operative Kalkulation verändert: Föderation fügt eine Kompositions- und Gateway-Ebene hinzu, die zusätzlich zu den oben genannten Punkten verwaltet werden muss.

REST hat hierfür kein direktes Äquivalent. Das nächste Analogon ist ein API-Gateway, das mehrere Dienste miteinander verknüpft, jedoch ohne ein gemeinsames Typsystem. Wenn das Ziel ein einheitlicher, stark typisierter Graph über viele Teams hinweg ist, spricht das für GraphQL. Wenn jeder Dienst eigenständig hinter seinen eigenen Endpunkten stehen kann, hält REST die Dinge einfacher.

Der aktuelle Stand von gRPC und tRPC

GraphQL vs. REST ist nicht das gesamte Spielfeld. gRPC ist eine starke Option für den internen Dienst-zu-Dienst-Verkehr, bei dem ein binäres Protokoll und generierte Clients besser abschneiden als menschenlesbares JSON und keine Browser-Anfragen verarbeitet werden müssen. tRPC ist einen Blick wert, wenn beide Enden des Stacks in einer einzigen Codebasis mit TypeScript geschrieben sind, da es End-to-End-Typsicherheit ohne Schema-Sprache oder Code-Generierungsschritt bietet. Beachten Sie jedoch, dass es keine Clients bedienen kann, die nicht unter Ihrer Kontrolle stehen.

Die grobe Aufteilung: REST für öffentliche und Drittanbieter-APIs, GraphQL für vielfältige First-Party-Clients, gRPC für internen Datenverkehr zwischen Diensten, tRPC für Full-Stack-TypeScript-Produkte. Große Infrastrukturen nutzen oft mehr als eine dieser Lösungen. Das ist ein normaler Endzustand und kein Versagen bei der Standardisierung.

Überblick über die Funktionen von GraphQL

Zwei Funktionen haben kein REST-Äquivalent, und beide verändern eher die Arbeitsweise der Teams als die Performance der API.

Schema und Typsystem

GraphQL verwendet ein eigenes Typsystem zur Definition des API-Schemas mit einer Syntax namens Schema Definition Language (SDL). Das Schema fungiert als Vertrag zwischen Server und Client und legt fest, wie ein Client auf die Daten zugreifen kann.

type Author {
  id: ID!
  name: String!
  posts: [Post!]!
}

type Post {
  id: ID!
  title: String!
  subtitle: String
  date: String!
  author: Author!
}

type Query {
  posts(limit: Int): [Post!]!
  user(id: ID!): Author
}

Sobald dieses Schema existiert, können Front-End- und Back-End-Teams unabhängig voneinander arbeiten, da das Front-End gegen daraus generierte Mock-Daten getestet werden kann. Das Front-End kann zudem die Typen, Queries und Mutationen des Schemas über Introspektionauslesen – die integrierte Fähigkeit, das Schema selbst abzufragen und eine Liste der verfügbaren Typen und Felder zu erhalten. Zusätzlich erhalten Sie Typsicherheit, die Fehler auf beiden Seiten frühzeitig erkennt. Die Schema Coordinates der Spezifikation vom September 2025 machen dieses introspektierte Schema auf standardisierte Weise adressierbar, was für Codegenerierung, Registries und KI-Tools äußerst nützlich ist.

GraphQL-IDEs

Die GraphQL-IDE ist einer der nützlichsten Bestandteile der Toolchain. Sie nutzt die selbstdokumentierende Natur des Schemas und nimmt Ihnen bei der Integration einen Großteil der Rätselarbeit ab.

Verwenden Sie einen aktuellen, gepflegten Client wie GraphiQL (gepflegt von der GraphQL Foundation), Apollo Sandbox oder Altair, um Ihr Schema zu untersuchen und Abfragen sowie Mutationen gegen Ihre API auszuführen, ohne vorher einen Client schreiben zu müssen.

Ein Hinweis zur Aktualität der Tools: der ältere GraphQL Playground wurde eingestellt und aus Apollo Server 3 entfernt. Da er seit 2019 nicht mehr gepflegt wird und bekannte Sicherheitslücken aufweist, sollten Sie für neue Projekte GraphiQL, Apollo Sandbox oder Altair bevorzugen.

Der wirtschaftliche Aspekt: Kosten, Risiko und Time-to-Value

Der technische Vergleich allein führt selten zu einer Entscheidung. Entscheidend sind die Bereitstellungsgeschwindigkeit, die Betriebskosten und das Risiko, das Sie eingehen.

  • Migrationsaufwand. Die Umstellung einer bestehenden REST-Landschaft auf GraphQL ist kein bloßes Umschreiben des Back-ends. Es ist eine neue Ebene davor, zuzüglich des Arbeitsaufwands in jedem Client. In der Praxis dauern das Schema-Design und die Client-Migration länger als das Aufsetzen des Servers, und die Migration ist erst abgeschlossen, wenn die alten Endpunkte abgeschaltet sind. Teams, die beides auf unbestimmte Zeit parallel betreiben, zahlen für zwei APIs und profitieren von keiner der beiden.
  • Team-Kompetenzen und Tools. GraphQL stellt höhere Anforderungen an ein Back-end-Team: Resolver-Design, Batching, Komplexitätsbegrenzungen, Autorisierung auf Feldebene, GraphQL-fähige Observability. REST ist weniger anspruchsvoll, und Experten dafür sind leichter zu finden. Wenn Ihr Team klein ist oder die API nur eine von vielen Aufgaben ist, fällt dieser Unterschied schnell ins Gewicht.
  • Wo tatsächlich Zeit gespart wird. Das Schema ist ein Vertrag, und dieser Vertrag beschleunigt die Bereitstellung. Front-end- und Back-end-Teams müssen nicht mehr über Endpunkt-Strukturen verhandeln und blockieren sich nicht mehr gegenseitig bei Releases. Der Nutzen zeigt sich bei Produkten, bei denen mehrere Clients auf ein Back-end zugreifen: Web, iOS, Android, eine Partner-Integration. Das ist das Muster hinter Projekten wie TrustPortal und der API-Integration, die wir für Game Achievementsentwickelt haben. Bei einem einzelnen Web-Client mit einem stabilen Datenmodell zeigt sich dieser Vorteil meist gar nicht.
  • Betrieblicher Aufwand. Caching, das Sie selbst aufbauen müssen. Alerting, das sich nicht auf Statuscodes stützen kann. Query-Kostenlimits, die Sie feinjustieren müssen. Das sind laufende Kosten, keine einmaligen, und sie werden bei der Schätzung am häufigsten übersehen.

Der Fünf-Fragen-API-Check von Imaginary Cloud

Dies ist die Checkliste, die unsere Ingenieure bei der API-Discovery durchgehen, bevor die erste Zeile Code geschrieben wird. Beantworten Sie alle fünf Fragen. Wenn drei oder mehr in die gleiche Richtung weisen, ist das ein klares Signal.

  1. Client-Vielfalt. Wie viele verschiedene Clients nutzen diese API, und wie unterschiedlich benötigen sie dieselben Daten? Ein Client spricht für REST. Vier verschiedene Clients sprechen für GraphQL.
  2. Payload-Sensibilität. Nutzen Ihre Anwender eingeschränkte Netzwerke oder datenvolumenbasierte Tarife, bei denen ein unnötiges Feld eine spürbare Belastung darstellt? Wenn ja, spricht das für GraphQL.
  3. Caching-Anforderungen. Ist Ihr Traffic leselastig und am Edge cachebar? Kostenloses HTTP-Caching ist das stärkste Argument für REST, und es neu aufzubauen ist der größte versteckte Kostenfaktor bei einer Umstellung.
  4. Team-Struktur. Arbeiten Front-End- und Back-End-Teams getrennt mit unterschiedlichen Release-Zyklen? Genau dort ist ein Schema-Vertrag am wertvollsten.
  5. Reifegrad des Monitorings. Wie stark basiert Ihr heutiges Alerting auf HTTP-Statuscodes? Je ausgereifter es ist, desto mehr müssen Sie umbauen, bevor eine GraphQL-API produktionssicher ist.

Beantworten Sie diese Fragen ehrlich, und die Entscheidung ist meist schon gefallen. Das Muster, das wir bei mobilen Produkten am häufigsten sehen, ist eine GraphQL-Schicht vor bestehenden REST-Diensten, die schrittweise für jeden Client einzeln eingeführt wird, anstatt durch eine komplette Umstellung.

Die Wahl zwischen GraphQL und REST

GraphQL bietet eine flexible, deklarative Entwicklungsumgebung und löst echte Probleme, die bei REST auf der Client-Seite verbleiben. Es verfügt über eine große Community, ein ausgereiftes Ökosystem und Implementierungen in verschiedenen gängigen Sprachen, darunter JavaScript, Go und Java. Dieser Beitrag behandelt die für eine Entscheidung wesentlichen Aspekte. Die GraphQL-Spezifikation geht deutlich tiefer auf die Sprache selbst ein.

Entwickeln Sie eine API hauptsächlich für eine mobile Anwendung? GraphQL ist eine sinnvolle erste Option, da Bandbreite und Roundtrips für Ihre Nutzer spürbar sind. Benötigen Sie Edge-Caching, ausgereiftes Monitoring und vorhersehbare Request-Kosten? REST bleibt die bessere Standardwahl.

Ist GraphQL also das Ende von REST? Nein, natürlich nicht. Es ist keine perfekte Technologie und bringt Nachteile mit sich, die REST nicht hat. Wenn man den gesamten Vergleich auf einen Nenner bringt, lautet er: Bei der Entscheidung zwischen GraphQL und REST geht es um Ihre Clients, Ihr Team und Ihre Betriebsabläufe, niemals darum, welche Technologie moderner wirkt.

Häufig gestellte Fragen

Ersetzt GraphQL REST?

Nein. Die Verbreitung von GraphQL nimmt zwar stetig zu, aber REST bleibt der Standard für öffentliche und Drittanbieter-APIs, und die meisten Unternehmen nutzen beides. GraphQL wird in der Regel vor bestehende REST-Dienste geschaltet, anstatt sie zu ersetzen.

Ist GraphQL schneller als REST?

Für einen Client, der Daten aus mehreren Ressourcen benötigt, ja, da eine einzige Anfrage mehrere Roundtrips ersetzt und die Nutzlast keine ungenutzten Felder enthält. Für eine einzelne cachebare Ressource ist REST meist schneller, da ein HTTP-Cache oder CDN diese ausliefern kann, ohne den Server überhaupt zu belasten. Eine nicht optimierte GraphQL-API, die vom N+1-Problem betroffen ist, kann deutlich langsamer sein als die REST-API, die sie ersetzt hat.

Wann sollte man GraphQL nicht verwenden?

Wenn Ihr Datenverkehr hauptsächlich aus Lesezugriffen besteht und über ein CDN bereitgestellt wird, wenn Sie einen Client mit einem stabilen Datenmodell haben, wenn Ihr Alerting auf HTTP-Statuscodes basiert oder wenn das Team, das die API betreut, klein und bereits voll ausgelastet ist.

Können GraphQL und REST zusammen betrieben werden?

Ja, das ist sogar das übliche Vorgehen. Eine GraphQL-Schicht wird vor bestehende REST-Dienste geschaltet und löst Felder durch deren Aufruf auf. Dies ermöglicht es Ihnen, einen Client nach dem anderen zu migrieren, anstatt sich auf eine komplette Umstellung festzulegen.

Wie hoch ist der Aufwand für eine Migration von REST zu GraphQL?

Der Server ist dabei der kleinere Teil. Der eigentliche Aufwand liegt im Schema-Design, der Autorisierung auf Feldebene, dem Batching, dem Caching und der clientseitigen Migration. Die Arbeit ist erst abgeschlossen, wenn die alten Endpunkte abgeschaltet wurden. Planen Sie dies pro Client und nicht als ein einziges großes Projekt.

Was ist sicherer: GraphQL oder REST?

Keines von beiden ist von Natur aus sicherer, aber sie weisen unterschiedliche Schwachstellen auf. REST hat begrenzte Kosten pro Endpunkt und Berechtigungsprüfungen an einer zentralen Stelle. GraphQL erfordert Autorisierung auf Feldebene, Begrenzungen für Abfragetiefe und -komplexität sowie in der Regel persistierte Abfragen, da eine einzelne Abfrage beliebig teuer sein kann und auf Typen zugreifen könnte, die der Aufrufer nicht erreichen sollte. Das OWASP GraphQL Cheat Sheet ist die Standardreferenz für die Absicherung.

Was ist GraphQL Federation?

Federation ermöglicht es mehreren Teams, jeweils einen Subgraph zu verwalten, den ein Gateway zu einem einzigen Graphen zusammenfügt, den der Client als eine einzige API abfragt. Die Composite Schema Specification standardisiert, wie diese Graphen über Gateways hinweg zusammengesetzt werden. Dies eignet sich für große Unternehmen, die eine kohärente API aus vielen Diensten bereitstellen, erfordert jedoch den Betrieb einer Kompositions- und Gateway-Schicht.

Was ist die neueste Version von GraphQL?

Die aktuelle stabile Ausgabe der GraphQL-Spezifikation ist die Ausgabe September 2025, die erste vollständige Ausgabe seit Oktober 2021. Sie ergänzt Schema-Koordinaten, OneOf-Eingabeobjekte und Beschreibungen für ausführbare Dokumente, von denen mehrere auf Codegen-Tools sowie LLM- oder Agenten-Werkzeuge ausgerichtet sind.

Zusammenarbeit

Sie schwanken bei Ihrem aktuellen Projekt zwischen GraphQL und REST? Wir konzipieren und entwickeln APIs für Web- und Mobilanwendungen, von Plattformen mit geringer Latenz wie TrustPortal bis hin zu verbraucherorientierten Produkten mit hohem Datenaufkommen wie Game Achievements. Gerne besprechen wir mit Ihnen die Vor- und Nachteile im Hinblick auf Ihre Clients, Ihr Team und Ihre Roadmap, bevor Sie sich für eine der beiden Technologien entscheiden. Kontaktieren Sie unser Team.

Joao Inez
Joao Inez

Webentwickler, der häufig Null statt Null eingibt. Ich liebe es, den funktionalen Stil von Javascript zu erkunden.

LinkedIn

Read more posts by this author

People who read this post, also found these interesting:

Dropdown caret icon