RESSOURCEN

Was ist GraphQL?

GraphQL ist eine Methode zur Kommunikation mit APIs, die als Alternative zu REST entwickelt wurde.

01Eine neue Abfragesprache

GraphQL ist eine Abfragesprache für APIs, die von Facebook und seiner Entwicklergemeinschaft entwickelt wurde. Sie wurde im Juni 2018 erstmals vorgestellt und ist inzwischen eine ausgereifte Technologie, die auf dem Markt weithin Anerkennung gefunden hat. Infolgedessen ist sie sehr anerkannt und viele Unternehmen entscheiden sich für ihre Implementierung. Um Ihnen zu sagen, wie sie sich unterscheidet, müssen wir uns ansehen, was immer noch am weitesten verbreitet ist: REST und worauf es basiert. GraphQL wird oft als Nachfolger von REST bezeichnet, weil es dessen Hauptprobleme löst. Wie Sie wahrscheinlich wissen, basiert es auf einer Art altem Systemdesign. Demnach ist jedes Datenmodell unter einer eigenen Adresse verfügbar. Wenn wir zum Beispiel einen Online-Shop mit Kleidung haben, können wir die folgenden Datenbankadressen haben:

  • /Karren
  • /Lagerhaus
  • /Produkte
  • /entdecken
  • und viele mehr...
GraphQL Abfragesprache

02Erhalten Sie nur, was Sie wollten

Tatsächlich wird die Anzahl solcher Adressen niemals klein sein, im Gegenteil, sie wird mit dem System wachsen. Denken Sie daran, dass Sie für fast jede Adresse eine Reihe von Aufrufen erstellen müssen, um Get-, Post-, Put- oder Delete-Anfragen zu bearbeiten. Das führt dazu, dass Sie eine große Anzahl von Adressen verwalten müssen und eine noch größere Anzahl von Aufrufen benötigen, um die Daten zu erhalten. GraphQL funktioniert auf eine völlig andere Weise. Wir haben nur eine Adresse, eine einzige Quelle der Wahrheit, von der wir Daten abrufen können. Was wir erhalten, hängt allein von uns ab und davon, wie wir die Abfrage konstruieren.

GraphQL-Abfrage

03Flexible Abfragen

Das Hauptmerkmal von GraphQL ist die Möglichkeit, flexible Abfragen durchzuführen, in denen wir genau definieren, welche Daten wir von der API erhalten möchten. Darüber hinaus bietet die Sprache die Möglichkeit, verschachtelte Abfragen zu erstellen, was ihr in diesen Bereichen einen noch größeren Vorteil gegenüber REST-APIs verschafft.

GraphQL-Abfrage

04Plattformunabhängig

Eine Gemeinsamkeit zwischen REST und GraphQL ist die Unabhängigkeit von Plattformen oder Programmiersprachen. Eine weitere Gemeinsamkeit ist die Idempotenz der gleichen Operationen. Sowohl bei der REST-Architektur als auch bei GraphQL können Operationen wie Abrufen, Ändern oder Löschen wiederholt verwendet werden, ohne dass sich das Ergebnis ändert.

REST vs. GraphQL

05Grundlegende Elemente

Die grundlegenden Elemente von GraphQL sind: Mutation:

  • Abfrage: eine grundlegende Fetch-Operation in GraphQL, mit der wir Daten abrufen können. Der Hauptunterschied besteht darin, dass wir genau die Daten erhalten, die wir angefordert haben, indem wir die Abfrage so strukturieren, dass wir nur das bekommen, was wir wollen.
  • Mutation: eine grundlegende Datenmanipulationsoperation in GraphQL, mit der wir Daten erstellen, ändern oder löschen können
  • Schema: die Grundlage jedes GraphQL-Projekts, es beschreibt die Logik und die Funktionalitäten, ist in SDL (Schema Definition Language) geschrieben und seine Hauptkomponenten sind Typen und Felder Resolver: die Funktion, die für die Verbindung Ihres GraphQL-Schemas mit dem Backend verwendet wird, sie wandelt Operationen in Daten um und kann Strings, Integer, Null und andere Primitive zurückgeben
  • resolver: resolver: die Funktion, die für die Verbindung Ihres GraphQL-Schemas mit dem Backend verwendet wird. Sie wandelt Operationen in Daten um und kann Strings, Ganzzahlen, Null und andere Primitive zurückgeben.
GraphQL Mutation

06Schema-Definitionssprache

GraphQL verwendet eine eigene Syntax: SDL oder Schema Definition Language. Sie wird verwendet, um das Schema einer API und ihre Typen und Felder zu spezifizieren. Typen werden mit dem Schlüsselwort type deklariert und Felder werden in Klammern für jeden Objekttyp hinzugefügt.

GraphQL Schema

07Wachsende Gemeinschaft

GraphQL ist zwar noch nicht so populär wie REST, aber seine Gemeinschaft wächst schnell. Es gibt bereits eine Reihe von großen Unternehmen wie GitHub, Netflix, PayPal oder Shopify, die sich für GraphQL entschieden haben. Es ist nur eine Frage der Zeit, bis weitere folgen werden.

GraphQL Gemeinschaft

GraphQL

  • Hierarchie: REST-APIs verwenden Uniform Resource Identifiers oder URIs, um Ressourcen zu adressieren. Das bedeutet, dass alles einem einfachen hierarchischen Ansatz folgt, was für kleine Projekte in Ordnung ist, aber bei größeren oder komplexeren Projekten eine Menge Probleme verursachen kann.
  • Mehrere Roundtrips: Aufgrund der hierarchischen Struktur hat eine REST-API in der Regel eine Reihe von Endpunkten und der Client benötigt wiederum mehrere Aufrufe, um alle benötigten Daten zu erhalten.
  • Über- und Unterabrufe: Die hierarchische Struktur und das Fehlen flexibler Abfragen bedeutet, dass REST-APIs in der Regel entweder zu viele unnötige Daten abrufen oder mehrere Aufrufe benötigen, um alle benötigten Daten zu erhalten. Dies wirkt sich natürlich sowohl auf die Bandbreite als auch auf die Leistung aus und wird in der Regel noch verstärkt, je größer die Anwendung ist.

REST

  • Kein Über- oder Unterabruf: GraphQL verwendet flexible oder sogar verschachtelte Abfragen, die sicherstellen, dass Sie genau und nur das erhalten, was Sie benötigen. Es sind keine mehrfachen Aufrufe erforderlich und es werden keine überschüssigen Daten empfangen, alles kann mit einer einzigen, speziell konstruierten Abfrage erledigt werden.
  • Einzelner EndpunktAuch hier brauchen Sie nur einen einzigen Endpunkt. Die Abfragestruktur wird dafür sorgen, dass Sie bekommen, was Sie brauchen. Wie Sie die Daten organisiert haben, ist irrelevant, solange Sie die Abfrage richtig konstruieren, wird sie alles bekommen, was Sie brauchen, selbst aus einem kompletten Durcheinander.
  • TypensicherheitGraphQL-Schemata verwenden ein starkes Typensystem, d.h. alle APIs, die dem Client zur Verfügung stehen, sind in der Schema Definition Language geschrieben, was Dateninkonsistenzen beseitigt und die Fehlersuche erheblich erleichtert.
LeftCircle

Warum GraphQL verwenden?

In Bezug auf die Leistung liegt der Vorteil von GraphQL auf der Hand, denn es wird nur ein einziger Endpunkt benötigt, um alle Ressourcen bereitzustellen. Natürlich können Abfragen ziemlich komplex werden, je nachdem, welche Daten Sie benötigen. Trotzdem ist es immer noch viel einfacher, eine einzige komplexe Abfrage zu verwalten, als eine große Anzahl von Endpunkten zu haben und eine noch größere Anzahl von einfachen Abfragen zu benötigen, um alle benötigten Daten von ihnen zu erhalten. Für jede komplexe Anwendung mit Microservices ist GraphQL einfach besser als REST. Für eine einfache Anwendung ist die Verwendung von REST immer noch in Ordnung, aber wenn diese Anwendung jemals größer wird, wird sie mit den gleichen Problemen konfrontiert, die oben erwähnt wurden, und eine Umstrukturierung, um diese zu vermeiden, wird eine Menge Ärger bedeuten.

Demo anfordern

Erleben Sie eine maßgeschneiderte Live-Demo und finden Sie heraus, warum GraphQL Editor die richtige Wahl ist, um sich von der Handarbeit zu verabschieden!