GraphQL ist eine Alternative zu REST. Clients fordern genau die Daten an, die sie benoetigen.
REST vs GraphQL¶
- REST: mehrere Endpunkte, feste Antworten
- GraphQL: ein Endpunkt, flexible Abfragen
- REST: Over-/Under-Fetching
- GraphQL: genau das, was Sie brauchen
Schema¶
type User {
id: ID!
name: String!
email: String
posts: [Post!]!
}
type Post {
id: ID!
title: String!
author: User!
}
Query¶
query {
user(id: "123") {
name
email
posts {
title
}
}
}
Mutation¶
mutation {
createUser(input: { name: "Hans", email: "[email protected]" }) {
id
name
}
}
Subscription (Echtzeit)¶
subscription {
messageAdded(channelId: "general") {
id
text
author { name }
}
}
N+1-Problem¶
Ein GraphQL-Resolver fuer Posts kann N Datenbankabfragen ausloesen. Loesung: DataLoader fuer Batching.
Wann GraphQL einsetzen¶
- Mobile Apps (Netzwerk-Traffic minimieren)
- Komplexe verschachtelte Daten
- Mehrere Clients mit unterschiedlichen Anforderungen
- Echtzeit mit Subscriptions
Wann NICHT einsetzen¶
- Einfache CRUD-API
- Datei-Uploads (REST ist einfacher)
- Caching (REST + CDN ist einfacher)
Empfehlung¶
REST reicht fuer die meisten APIs aus. Fuegen Sie GraphQL hinzu, wenn Sie komplexe Datenanforderungen oder mehrere Clients haben.
graphqlapibackend