???
Ü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. Im folgenden werden die drei Technologien erklärt:
EXKURS: Wie sind URI aufgebaut?
Da es bei REST um die Abfrage und Manipulation von Objekten über deren Ressourcen geht, werden diese Ressourcen über die URI angesteuert. Beispielsweise könnte ein Produkt eines Shops die folgende URI besitzen:
https://api.predic8.de/shop/products/11
Dieser Link beinhält Adresse und Name eines Objektes. Die nachfolgenden Daten ist die sogenannte Repräsentation.
{
"name": "Red Grapes",
"price": 1.79,
"category_url": "/shop/categories/Fruits",
"vendor_url": "/shop/vendors/501"
}
Die oben schon erwähnten Methoden GET, POST, PUT und DELETE dienen zur Manipulation und Abfrage dieser Ressourcen. Als Ausgleich gibt es einen großen Gestaltungsspielraum bei der Vergabe von Namen für die Ressourcen, also für die URIs bzw. Pfade.
Möchten wir beispielsweise ein neues Produkt anlegen, können wir dies mit einem HTTP-Request tun. Mit POST addressiert die URL die Ressource und das JSON Dokument im HTTP Body ist die Repräsentation. Das Datenformat der Repräsentation ist hierbei frei wählbar zwischen JSON, XML oder Binärformate wie Bilder, PDF etc.
POST https://api.predic8.de/shop/products/
Content-Type: application/json
{
"name": "Tollkirsche",
"preis": 7.99
}
predict8.de
Hier findest du noch mehr Aufrufe und Funktionsweisen von REST
Was ist der unterschied zu REST?
Im Kapitel Datenbanken wurde die Datenbank SQL erklärt. GraphQL ist mit der Datenbankabfragesprache SQL vergleichbar. Wie auch bei SQL hat der Client bei seinen Abfragen einen großen Spielraum die der Server in seinen Anfragen interpretiert um die gewünschte Antwort zu generieren. Die Objekte haben hier Beziehungen zueinander, welche wie bei einem JOIN in SQL mit einer Abfrage verfolgt werden kann.
Im folgenden Beispiel ist eine Abfrage bei der Preis, Name und Ort des Herstellers abgefragt wird. Der Server muss hierbei die Beziehung zwischen Hersteller und dem Produkt kennen um zu diesen zu gelangen. Mit REST oder gRPC müssten hierfür zwei Aufrufe hintereinander getätigt werden.
POST /shop/graphql
{
produkte {
name
preis
hersteller {
ort
}
}
}
Möchtest du mehr über GraphQL nachlesen dann schau Hier vorbei.
Für die Übertragung von gRPC Aufrufen wird das HTTP/2 Protokoll verwendet. Im Gegensatz zu REST kommt der Entwickler mit HTTP direkt nicht in Verbindung. Das Ansprechen des Netzwerkes ist bei gRPC in den aus der Schnittstellenbeschreibung generierten Klassen verborgen.
Möchtest du mehr über gRPC nachlesen dann schau Hier vorbei.
EXKURS: Was sind Remote Procedure Calls?
Anwednungen können über RPCs Funktionen bereitstellen, die über
das Netzwerk von anderen Rechnern aufgerufen werden können.
In diesem Video wird RPC genau erklärt:
REST | GraphQL | gRPC |
---|---|---|
Bei REST geht es um eine Client-Server-Beziehung, bei der serverseitige Daten in einfachen Formaten verfügbar gemacht werden. Für den Datenaustausch zwischen Anwendungen wir meist JSON (oder XML) verwendet. Dies arbeitet textbasiert und belastet dadurch nur die Netzwerkressourcen. | Mit GraphQL bestimmt der Client, welche Daten er möchte, wie er sie haben möchte und in welchem Format er sie haben möchte. GraphQL ist im Grunde wie RPC mit ein paar Eigenschaften von REST. | Durch Protocol Buffers (protobuf) und HTTP/2 wird hier ein deutlich kompakterer Datenstrom organisiert. Der Speicherbedarf wird durch Serialisierung und Binarisierung der Daten um 70% verringert. Durch bidirektionales Streaming ohne Blockierungen beim Datenaustausch hat gRPC Leistungs- und Geschwindigkeitsvorteile. |
Webhooks werden beispielsweise für Slack genutzt. Hier wird Slack per Webhook angesteuert und eine Nachricht in einen bestimmten Channel zu posten, wenn sich auf einer Anwendung ein neuer Nutzer:in registriert.