GraphQL-Grundlagen für React-Entwickler
GraphQL-Queries, Mutationen, Subscriptions und Schemas aus der Perspektive von Frontend-Entwicklern verstehen
GraphQL-Grundlagen für React-Entwickler ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des React Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.
GraphQL im Vergleich zu REST
REST stellt Endpunkte mit fester Struktur bereit: GET /users/:id gibt unabhängig vom tatsächlichen Bedarf des Clients das gesamte Benutzerobjekt zurück. Mit GraphQL können Clients exakt die gewünschten Felder angeben. Dadurch werden Overfetching (zu viele Daten) und Underfetching (nicht genügend Daten, sodass mehrere Anfragen erforderlich sind) vermieden.
Mit einer einzigen GraphQL-Query können Sie einen Benutzer, seine Posts und den Autor jedes Posts in einem einzigen Roundtrip abrufen.
Das GraphQL-Schema
Jede GraphQL-API wird durch ein Schema definiert, das in der Schema Definition Language (SDL) geschrieben ist. Das Schema deklariert Typen und ihre Felder sowie die Root-Typen Query, Mutation und Subscription, mit denen Clients arbeiten können.
Das Schema ist der Vertrag zwischen Client und Server. Frontend- und Backend-Teams können parallel arbeiten, sobald das Schema vereinbart ist.
Eine GraphQL-Query schreiben
Eine GraphQL-Query wählt Felder aus: { user(id: "1") { name email posts { title } } }. Verschachtelte Felder bilden Beziehungen in einer einzigen Anfrage ab. Aliase benennen Felder um: { me: user(id: "1") { name } }. Fragments ermöglichen die Wiederverwendung von Feldauswahlen in mehreren Queries.
Variablen machen Queries wiederverwendbar: query GetUser($id: ID!) { user(id: $id) { name } } mit den Variablen: { id: "1" }.
Resolver auf dem Server
Jedes Feld im GraphQL-Schema verfügt über eine Resolver-Funktion auf dem Server. Wenn ein Client user.name abfragt, ruft der user-Resolver das Benutzerobjekt ab und gibt der name-Resolver (oder der Standard-Resolver) das Feld name zurück.
Diese Auflösung auf Feldebene ermöglicht es GraphQL, genau die angeforderten Daten abzurufen.
Das N+1-Problem
Wenn Sie eine Liste mit 100 Posts abfragen und jeder Post seinen Autor enthält, führt eine naive Implementierung 100 separate Datenbankabfragen für die Autoren aus. Dieses N+1-Problem macht GraphQL-APIs ohne Optimierung langsam.
DataLoader löst das N+1-Problem, indem es alle Autorenabfragen mithilfe eines Request-bezogenen Caches und einer Batch-Funktion zu einer einzigen Datenbankabfrage bündelt.
GraphQL Playground und Apollo Studio
Apollo Studio und GraphQL Playground sind browserbasierte Benutzeroberflächen, mit denen Sie eine GraphQL-API interaktiv erkunden können. Sie vervollständigen Felder anhand des Schemas automatisch, zeigen Abfrageergebnisse an und blenden Typdokumentation direkt ein.
Die Verwendung des Playgrounds ist der schnellste Weg, eine unbekannte GraphQL-API zu verstehen, bevor Sie Clientcode schreiben.
Typ-Introspektion
GraphQL-APIs stellen ihr eigenes Schema über eine Introspektionsabfrage bereit: { __schema { types { name } } }. Clients können das Schema selbst abfragen, um verfügbare Typen, Felder und Argumente zu ermitteln.
Codegenerierungstools wie graphql-codegen verwenden die Introspektion, um automatisch TypeScript-Typen zu generieren, die dem API-Schema entsprechen.
Mutationen und Subscriptions
GraphQL-Mutationen ändern Daten: mutation CreatePost($input: PostInput!) { createPost(input: $input) { id title } }. Subscriptions stellen eine persistente Verbindung (üblicherweise per WebSocket) her und senden Aktualisierungen: subscription { postAdded { id title } }.
Alle drei Root-Typen (Query, Mutation, Subscription) verwenden dieselbe Feldauswahlsyntax.
Wann GraphQL REST überlegen ist
GraphQL eignet sich besonders für Anwendungen mit komplexen, verschachtelten Datenanforderungen, mehreren Clienttypen (mobil, Web, TV), die jeweils unterschiedliche Teilmengen von Feldern benötigen, oder sich schnell weiterentwickelnden APIs, bei denen die Außerkraftsetzung von Feldern gegenüber der Versionierung von Endpunkten bevorzugt wird.
REST ist einfacher für CRUD-APIs mit vorhersehbaren, flachen Ressourcenstrukturen und hervorragenden HTTP-Caching-Eigenschaften mithilfe von ETags und Cache-Headern.
GraphQL-Clients: Apollo, URQL, React Query
Apollo Client ist der funktionsreichste GraphQL-Client: normalisierter Cache, lokale Zustandsverwaltung, Subscriptions und Links zur Fehlerbehandlung. URQL ist leichtgewichtiger und bietet einen Dokumentcache sowie eine einfachere API. React Query mit graphql-request ist der einfachste Ansatz für grundlegende Queries und Mutationen ohne ausgefeilte Caching-Funktionen.
Wählen Sie anhand Ihrer Caching-Anforderungen: einen normalisierten Cache für Entitäten, die über mehrere Queries hinweg gemeinsam genutzt werden (Apollo), oder einen einfacheren Dokumentcache für unabhängige Queries (URQL oder React Query).
SDL-Beispiel
Ein einfaches SDL: type User { id: ID! name: String! posts: [Post!]! } type Post { id: ID! title: String! author: User! } type Query { user(id: ID!): User users: [User!]! }. Ausrufezeichen kennzeichnen Nicht-Null-Felder.
Dieses Schema zeigt dem Client genau, welche Felder für jeden Typ existieren und welche Queries verfügbar sind, und ermöglicht so typsichere Codegenerierung.
GraphQL: Overfetching und Underfetching
Was bedeutet „Overfetching“ im Kontext von REST und GraphQL?
Zusammenfassung der Lektion
Mit GraphQL können Clients mithilfe einer schemaspezifizierten Abfragesprache genau die benötigten Felder anfordern (kein Overfetching oder Underfetching). Resolver beantworten jedes Feld; DataLoader löst das N+1-Problem. Introspektion ermöglicht die Codegenerierung von TypeScript-Typen. Apollo Client, URQL und React Query sind die wichtigsten mit React kompatiblen GraphQL-Clients.
Wählen Sie GraphQL für komplexe, verschachtelte Datenanforderungen mit mehreren Clients und REST für einfaches CRUD mit vorhersehbaren Strukturen.
Häufig gestellte Fragen
Ist die Lektion „GraphQL-Grundlagen für React-Entwickler“ kostenlos?
Ja — der vollständige Text von „GraphQL-Grundlagen für React-Entwickler“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des React Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „GraphQL-Grundlagen für React-Entwickler“?
GraphQL-Queries, Mutationen, Subscriptions und Schemas aus der Perspektive von Frontend-Entwicklern verstehen Du übst React Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um React Academy zu starten?
Keine Vorkenntnisse erforderlich. React Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „GraphQL-Grundlagen für React-Entwickler“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser React Academy-Lektion Code schreiben und ausführen?
Ja. Jede React Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- GraphQL-Grundlagen für React-Entwickler
- Apollo Client in React einrichten
- useQuery- und useMutation-Hooks
- Apollo-Cache: Normalisierung und Aktualisierungen