English

Polski

Français

日本

Español

Nederlands

Dansk

In den GraphQL Editor einloggen
RESSOURCEN

Wofür wird GraphQL verwendet?

GraphQL ist eine Methode, um mit APIs zu kommunizieren, 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 vorgestellt und ist inzwischen eine ausgereifte Technologie, die auf dem Markt weithin Anerkennung gefunden hat. Daher ist sie sehr bekannt und viele Unternehmen entscheiden sich für ihre Implementierung. Um dir 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 du wahrscheinlich weißt, basiert es auf einer Art altem Systemdesign. Demnach ist jedes Datenmodell unter einer eigenen Adresse verfügbar. In einem Onlineshop für Kleidung können wir zum Beispiel Adressen für den Warenkorb, das Lager, die Produkte und viele andere haben.

GraphQL Abfragesprache

02Nur das bekommen, was du wolltest

Tatsächlich wird die Anzahl solcher Adressen nie klein sein, sondern im Gegenteil mit dem System wachsen. Bedenke, dass du für fast jede Adresse eine Reihe von Aufrufen erstellen musst, um Get-, Post-, Put- oder Delete-Anfragen zu bearbeiten. Das führt dazu, dass du eine große Anzahl von Adressen verwalten musst und eine noch größere Anzahl von Aufrufen benötigst, um die Daten zu erhalten. GraphQL funktioniert auf eine ganz andere Weise. Wir haben nur eine Adresse, eine einzige Quelle der Wahrheit, von der wir Daten abfragen können. Was wir bekommen, hängt allein von uns und der Art und Weise ab, wie wir die Abfrage konstruieren.

GraphQL-Abfragen

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 wollen. Außerdem 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-Abfragen

04Plattformunabhängig

Eine Gemeinsamkeit zwischen REST und GraphQL ist die Unabhängigkeit von Plattformen und 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

05Grundelemente

Die grundlegenden Elemente von GraphQL sind: Mutation:

  • Query: eine grundlegende Fetch-Operation in GraphQL, mit der wir Daten abrufen können. Der Hauptunterschied besteht darin, dass wir genau die Daten bekommen, die wir angefordert haben, indem wir die Query 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 Funktionalitäten, ist in SDL (Schema Definition Language) geschrieben und seine Hauptkomponenten sind Typen und Felder Resolver: die Funktion, die für die Verbindung deines 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 ist die Funktion, die dein GraphQL-Schema mit dem Backend verbindet. Sie wandelt Operationen in Daten um und kann Strings, Integer, Null und andere Primitive zurückgeben.
GraphQL Mutationen

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 definieren. Typen werden mit dem Schlüsselwort type deklariert und Felder werden für jeden Objekttyp in Klammern hinzugefügt.

GraphQL Schemas

07Wachsende Gemeinschaft

GraphQL ist zwar noch nicht so populär wie REST, aber seine Community wächst schnell. Einige große Unternehmen wie GitHub, Netflix, PayPal oder Shopify haben sich bereits dafür entschieden. Es ist nur eine Frage der Zeit, bis weitere folgen werden.

GraphQL Gemeinschaft

GraphQL

  • Keine Über- oder Unterforderung: GraphQL verwendet flexible oder sogar verschachtelte Abfragen, die sicherstellen, dass du genau und nur das bekommst, was du brauchst. Es sind keine mehrfachen Aufrufe nötig und es werden keine überflüssigen Daten empfangen, alles kann mit einer einzigen, speziell konstruierten Abfrage erledigt werden.
  • Einzelner EndpunktAuch hier brauchst du nur einen einzigen Endpunkt. Wie du die Daten organisiert hast, spielt keine Rolle. Solange du die Abfrage richtig konstruierst, wird sie alles finden, was du brauchst, selbst wenn sie völlig unübersichtlich ist.
  • 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 erleichtert.

REST

  • 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 zu einer Menge Probleme führen kann.
  • Mehrere Roundtrips: Aufgrund der hierarchischen Struktur hat eine REST-API in der Regel eine Reihe von Endpunkten, und der Kunde benötigt wiederum mehrere Aufrufe, um alle benötigten Daten zu erhalten.
  • Über- und Unterabrufe: Die hierarchische Struktur und das Fehlen flexibler Abfragen bedeuten, 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. Das wirkt sich natürlich auf die Bandbreite und die Leistung aus und wird in der Regel umso schlimmer, je größer die Anwendung ist.

Bereit zum Abheben?

Verbessere deine Arbeit mit unserem Editor, der eine erstklassige visuelle Grafik, Dokumentation und API-Konsole kombiniert

Erste Schritte mit dem GraphQL Editor