graphql

GraphQL, eine neue Alternative zu REST?

Von am 17.09.2018

Seitdem GraphQL im Jahr 2015 von Facebook der Öffentlichkeit als open-source Quelle angeboten wurde, erlangt es unter Entwicklern immer mehr Beliebtheit und wird als Alternative zu RESTful APIs angesehen. Es stellt sich nun die Frage, ob man weiterhin bei der gut bewährten REST Technologie bleiben, oder auf den neuen Zug aufspringen soll. In diesem Blog Post werde ich kurz die Vor- und Nachteile beschreiben bzw. Vergleiche aufstellen.

Was ist GraphQL?

Es handelt es sich um eine Query Language für Web APIs, wessen Syntax genau beschreibt welche Daten vom Server benötigt werden und besteht aus zwei Komponenten:

  • Das Schema beschreibt relevanten Daten sowie die Beziehungen untereinander und wird am Server erstellt
  • Die Query Language wird am Client verwendet und beschreibt welche Daten vom Server benötigt werden.

Vergleich von REST und GraphQL

Mehrfache Endpunkte

Da in RESTful Applikationen eine URL genau eine Ressource beschreibt, jedoch oft mehrere Ressourcen benötigt werden, kommt es vor, dass man mehrere Endpunkte nacheinander aufrufen muss, was oft zu Rundreisen führt, um an alle Daten ranzukommen.

Für einen einfachen Vergleich zwischen REST und GraphQL, können wir in einem klassischen REST Client nach Kommentaren von Blogposts suchen lassen.

REST Requests

Im Vergleich dazu verwendet GraphQL genau einen Request der vom Client, um an alle nötigen Daten zu kommen.

GraphQL Request

Überflüssige/Unzureichende Daten

Oft werden bei der Kommunikation mit einer API zusätzlich zu den benötigten, eine Vielzahl an nicht benötigten Daten mitgeschickt. Auf der anderen Seite werden nicht alle Daten geliefert und es sind mehrere Request notwendig um an alle relevanten Informationen zu kommen. Das sind zwei Probleme, die bei RESTful APIs des Öfteren auftreten und zu einer Ansteigung der Response Zeiten führen.

Wie im vorherigen Punkt beschrieben, wird bei einem GraphQL Request genau definiert welche Daten benötigt werden. Diese werden dann im Response, wie ein Spiegelbild des Request zurückgeliefert.

Typisierung

Nicht alle Daten, welche wir von RESTful APIs empfangen sind typisiert bzw. werden die Daten nicht anständig übergeben. Das führt zu Problemen bei der Dokumentation, da es schwer ist zu spezifizieren welche Daten der Client vom Server erwarten kann.

Das GraphQL Schema ist streng typisiert und erlaubt der API eine automatische Dokumentation zu erstellen, welche der Client nützen kann.

GraphQL Typing

Client tappt im Dunklen

Der Client weiß bis er den Response empfängt nicht wie dieser aussieht bzw. strukturiert ist. Dies führt oft zu Fehlern und nicht richtig behandelten Daten.

Im Gegensatz dazu bestimmt bei GraphQL der Client welche Daten er braucht und wie der Response aussehen soll.

Nachteile von GraphQL

Cachfunktion

Natives HTTP Caching ist nicht möglich.

Schema ist nach Außen bekannt

Da das Schema am Client ersichtlich ist, gibt man preis wie die Datenstrukturen der Applikation aussehen.

Sicherheit/Authentifizierung

Es ist noch keine native Lösung für die Handhabung von Authentifizierungen vorhanden.

 

Zusammenfassend kann man sagen, dass beider Technologien ihre Vorzüge haben, wobei REST mit Zuverlässigkeit und GraphQL mit Performance überzeugt. Bevor man also den Umstieg wagt, sollte man sich genau mit den Anforderungen der Applikation vertraut machen.


Quellen:

https://dev.to/sadarshannaiynar/graphql-or-rest-what-should-i-use-38mj

https://graphql.org/

The comments are closed.