Netzwerk API-Paradigmen

Was sind Netzwerk API-Paradigmen? & Welche gibt es?

Was ist ein Netzwerk API-Paradigma?

???

Welche gibt es?

Ü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:

REST
Representational State Transfer (kurz: REST) REST ist ein Architekturstil, mit dem ganze Anwendungen gestaltet werden können. Das heißt hier wird beschrieben wie Anforderungen mit dem HTTP Protokoll und den Prinzipien des Webs umgesetzt werden können. Mit den HTTP Methoden GET, POST, PUT und DELETE werden Daten abgefragt, angelegt, geändert oder gelöscht. 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.

EXKURS: Wie sind URI aufgebaut?

URI_Erklärung

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

GraphQL
Die Abfragesprache für APIs wurde von Facebook entwickelt und kann mit einer Anfrage genau filtern was als Antwort erwartet wird und so zusätzliche Aufrufe vermeiden. Aufgrund der eingesparten Aufrufe ist GraphQL schneller im Antwortverhalten als REST und somit auch bei schlechten Verbindungen eine otpimalere Lösung. Funktionsaufrufe oder die Manipulation von Daten ist hier ebenfalls möglich.

Was ist der unterschied zu REST?

RESTvsGraphQL devopedia.org

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.

gRPC
Da Google super viele Daten verarbeitet und es keine Technologie gab die den Anforderungen stand hielten, hat Google protopuf und gRPC entwickelt. gRPC leitet sich aus der Remote Procedure Call-Technologie ab, 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). Es gibt noch andere Technologien die ebenfalls auf RPC zurückgreifen, diese sind bspw. die SOAP basierten Web Services, SAP RFC oder CORBA.

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:

Welche API ist die richtige für mein Projekt?

Welche_API apisyouwonthate.com

Was ist der Unterschied zwischen REST vs. GraphQL vs. gRPC?

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
Webhooks sind eine Umkehrung der klassischen Client-Server-Beziehung. Das heißt ein Webhook ist ein einfacher HTTP Post der ausgelöst wird, wenn ein Ereignis ausgelöst wird. Beim klassischen Ansatz fordert der Client Daten vom Server an, und der Server stellt diese Daten dann für den Client bereit. Unter dem Webhook-Paradigma aktualisiert der Server eine bereitgestellte Ressource und diese benachrichtigt dann eine andere Anwendung darüber, dass sie ihr Ereignis auslösen kann. Der Server pusht diese Daten. Dadurch wird der Client kein Anforderer, sondern ein passiver Empfänger.

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.

Zurück