REST, GraphQL und gRPC im Vergleich
Von: Thomas Bayer
Datum: 31. Jan. 2021
Aktualisiert: 2. April 2021
Über REST, GraphQL oder gRPC können Client und Server miteinander kommunizieren. Für den Transport von Nachrichten verwenden alle drei das HTTP oder HTTP/2 Protokoll. Abgesehen von diesen Gemeinsamkeiten, sind die drei Alternativen grundverschieden. Dieser Artikel hilft dir bei der Auswahl der passenden Technologie für dein Projekt.
In diesem ersten Teil werden gRPC, GraphQL und REST kurz vorgestellt. Zu den folgenden Themen gibt es weitere Teile:
- Teil 2: Konzepte & Architektur
- Teil 3: Formate
- Teil 4: Schnittstellenbeschreibung mit OpenAPI, IDL & GraphQL Schema
- Teil 5: Streaming
- Teil 6: Performanz
- Teil 7: Plattformen und Programmiersprachen
In diesem ersten Teil des Artikels werden REST, GraphQL und gRPC kurz beschrieben.
1. Representational State Transfer, der Platzhirsch
REST ist mit Abstand das beliebteste der drei „Protokolle“. Genaugenommen ist REST kein Protokoll, sondern ein Architekturstil, mit dem ganze Anwendungen gestaltet werden können. Bei REST wurde keine neue Technologie entwickelt, sondern beschrieben, wie Anforderungen mit dem HTTP Protokoll und den Prinzipien des Webs umgesetzt werden können. Beispielsweise wird das Abfragen, Anlegen, Ändern und Löschen von Daten auf die HTTP Methoden GET, POST, PUT und DELETE abgebildet. Diese Methoden werden direkt auf den Geschäftsobjekten, die als HTTP Ressourcen über URIs adressierbar sind, angewandt. Mit Hypermedia können die Ressourcen verlinkt werden.
2. GraphQL, der Herausforderer
GraphQL ist eine Abfragesprache für APIs von Facebook. Ein Client kann mit seiner Abfrage genau spezifizieren, was er als Antwort erwartet und so zusätzliche Aufrufe vermeiden. Die eingesparten Aufrufe optimieren das Antwortverhalten bei langsamen Verbindungen und sind deshalb besonders für mobile Anwendungen wie Apps interessant. Anders als der Name Query Language suggeriert, sind Funktionsaufrufe oder die Manipulation von Daten ebenfalls möglich.
3. Google RPC
Google verarbeitet unvorstellbare Datenmengen und benötigt daher eine effiziente Kommunikation zwischen Anwendungen. Da es keine Technologie gab, die die Anforderungen von Google erfüllt hat, hat Google selbst protobuf und gRPC entwickelt.
Wie aus dem Namen ersichtlich handelt es sich bei gRPC um einen Vertreter der Remote Procedure Call-Technologie, bei der Funktionen über das Netzwerk aufgerufen werden können. Der Buchstabe g von gRPC steht bei jeder Minor-Release für einen anderen Namen. gummybear,gringotts oder gamit waren bereits an der Reihe.
Die RPC Variante von Google ist moderner und leichtgewichtiger als ihre Vorgänger CORBA, Web Services oder SAP RFCs. gRPC ist ein Open Source Projekt der Cloud Native Computing Foundation im Incubation-Status.
Im zweiten Teil dieses Artikels Konzepte und Architektur werden die Ansätze und Ideen hinter REST, GraphQL und gRPC genauer beschrieben.