gRPC, GraphQL und REST im Vergleich
gRPC, GraphQL und REST decken unterschiedliche Anforderungen ab: gRPC ist performant für interne Services, GraphQL flexibel für Client-Anfragen und REST einfach und universell einsetzbar.
Kompakte Beschreibung
gRPC, GraphQL und REST sind drei etablierte Ansätze für den Aufbau von APIs. REST ist der bewährte Standard für Web-APIs und nutzt HTTP mit Ressourcen und Statuscodes. GraphQL ist eine Abfragesprache, die es Clients ermöglicht, exakt die benötigten Daten in einer Anfrage zu erhalten. gRPC ist ein performantes Remote Procedure Call Framework, das auf HTTP/2 und Protocol Buffers basiert und besonders für interne Microservices geeignet ist. REST punktet durch Einfachheit und breite Unterstützung, GraphQL durch Flexibilität und gRPC durch Effizienz und Typensicherheit. Die Wahl hängt von der Architektur, den Clients, den Performance-Anforderungen und den bestehenden Standards ab.
Wichtige Komponenten
REST
REST ist ein Architekturstil für ressourcenorientierte APIs. Endpunkte wie /users/42 repräsentieren Ressourcen, HTTP-Methoden wie GET, POST, PUT und DELETE definieren Operationen. REST ist zustandslos, einfach zu verstehen und wird von praktisch allen Clients und Tools unterstützt. JSON ist das dominierende Datenformat. REST eignet sich besonders für öffentliche APIs, Web- und Mobile-Anwendungen.
GraphQL
GraphQL wurde entwickelt, um Clients genau die Daten zu liefern, die sie anfordern. Ein Schema definiert verfügbare Typen und Felder. Clients senden Queries, um Daten abzufragen, Mutations, um Daten zu ändern, und Subscriptions, um Echtzeit-Updates zu erhalten. GraphQL vermeidet Overfetching und Underfetching, erfordert aber mehr Planung und spezielle Caching-Strategien.
gRPC
gRPC ist ein Remote Procedure Call Framework von Google. Es nutzt HTTP/2 als Transport und Protocol Buffers für die effiziente Serialisierung von Daten. Services und Methoden werden in proto-Dateien definiert. gRPC ist stark typisiert, performant und bietet Features wie Streaming, Deadlines und Interceptors. Es ist besonders für interne Kommunikation zwischen Microservices geeignet.
Protokoll und Transport
REST und GraphQL werden typischerweise über HTTP/1.1 oder HTTP/2 übertragen. gRPC nutzt ausschließlich HTTP/2 und profitiert davon in puncto Multiplexing, Header-Kompression und bidirektionalen Streams. REST ist leicht über Browser und Standard-Clients zugänglich, gRPC benötigt oft spezielle Client-Bibliotheken.
Datenformat und Typisierung
REST verwendet meist JSON, ein flexibles, aber nicht streng typisiertes Format. GraphQL hat ein starkes Schema, aber die Übertragung erfolgt meist als JSON. gRPC nutzt Protocol Buffers, die binär und stark typisiert sind. Die Typisierung bei gRPC reduziert Fehler und ermöglicht Codegenerierung.
Performance und Latenz
gRPC ist aufgrund von HTTP/2 und binären Protobuf-Nachrichten sehr effizient und schnell. REST ist für viele Anwendungen ausreichend schnell, kann aber durch JSON-Parsing und Overfetching mehr Overhead haben. GraphQL kann durch komplexe Queries teuer werden, wenn viele Resolver oder verschachtelte Daten involviert sind.
Caching
REST profitiert am besten von HTTP-Caching und CDNs. GraphQL erfordert entweder Persisted Queries oder serverseitige Caching-Lösungen. gRPC wird meist auf Anwendungsebene gecacht, da HTTP/2 Multiplexing und binäre Protokolle Standard-Caching-Mechanismen erschweren.
Streaming
gRPC bietet native Unterstützung für Client-Streaming, Server-Streaming und bidirektionales Streaming. REST kann Streaming über Server-Sent Events oder WebSockets realisieren, das ist aber nicht so integriert. GraphQL bietet Subscriptions für Echtzeit-Updates, meist über WebSockets.
Codegenerierung
gRPC ermöglicht automatische Codegenerierung für Client und Server aus proto-Dateien. GraphQL bietet codegen für Typen und Queries. REST kann mit OpenAPI ebenfalls Code generieren, ist aber weniger streng typisiert als gRPC.
Einsatzgebiete
REST ist ideal für öffentliche APIs, Web- und Mobile-Apps, bei denen Einfachheit und breite Kompatibilität wichtig sind. GraphQL ist ideal für komplexe Datenlandschaften, Aggregationsschichten und mobile Clients. gRPC ist ideal für interne Microservices, hochfrequente Kommunikation und Systeme, die geringe Latenz benötigen.
Praxisbeispiel
Ein SaaS-Unternehmen nutzt eine Architektur aus drei API-Stilen für unterschiedliche Zwecke.
Öffentliche Partner-API mit REST:
GET /api/v1/invoices/12345
Accept: application/json
Mobile App mit GraphQL:
query {
invoice(id: "12345") {
number
total
customer {
name
email
}
items {
description
amount
}
}
}
Interne Microservices mit gRPC:
syntax = "proto3";
service BillingService {
rpc GetInvoice (InvoiceRequest) returns (Invoice);
}
message InvoiceRequest {
string id = 1;
}
message Invoice {
string id = 1;
string number = 2;
double total = 3;
}
Die REST-API ist für externe Partner einfach zugänglich, die GraphQL-API liefert der Mobile App genau die benötigten Daten, und gRPC ermöglicht schnelle, typisierte Kommunikation zwischen internen Billing- und Payment-Services.
FAQ: gRPC, GraphQL und REST im Vergleich
1. Was ist der Hauptunterschied zwischen gRPC, GraphQL und REST?
2. Wann ist gRPC die beste Wahl?
3. Wann ist GraphQL sinnvoll?
4. Wann ist REST die bessere Option?
5. Was sind Protocol Buffers?
6. Was ist HTTP/2 und warum nutzt gRPC es?
7. Kann man gRPC im Browser nutzen?
8. Was ist Overfetching und wie vermeidet GraphQL es?
9. Was sind GraphQL Subscriptions?
10. Was ist gRPC Streaming?
11. Ist REST langsamer als gRPC?
12. Wie funktioniert Caching bei den drei Stilen?
13. Was ist Codegenerierung bei gRPC?
14. Können REST, GraphQL und gRPC kombiniert werden?
15. Welche API-Architektur sollte man in der Praxis lernen?
Weiter im API Lernpfad
Der nächste Artikel im API Lernpfad behandelt API REST vs. GraphQL vs. gRPC — die Entscheidungshilfe: wann Du welches API-Paradigma einsetzt und welche Kriterien dabei zählen.
Quellen
Buchempfehlungen zur API-Entwicklung
Wenn Du Dich weiter mit gRPC, GraphQL, REST und moderner API-Architektur beschäftigen möchtest, empfehlen wir Dir die folgenden Bücher:
API-Entwicklung
Bücher über API-Design, REST, GraphQL, OpenAPI und API-Architektur
REST und HTTP: Entwicklung und Integration nach REST-Prinzipien von Stefan Tilkov
Bei Amazon ansehenAffiliate-Link: Bei einem Kauf erhalten wir möglicherweise eine Provision.
API-Design: Praxishandbuch für Java- und Webservice-Entwickler
Bei Amazon ansehenAffiliate-Link: Bei einem Kauf erhalten wir möglicherweise eine Provision.
Microservices: Grundlagen flexibler Softwarearchitekturen von Eberhard Wolff
Bei Amazon ansehenAffiliate-Link: Bei einem Kauf erhalten wir möglicherweise eine Provision.






