Konto Anmelden
Jump to section

Was ist GraphQL?

URL kopieren

GraphQL ist eine Abfragesprache und serverseitige Runtime für APIs, die den Kunden nur diejenigen Daten zur Verfügung stellt, die sie wirklich brauchen.

GraphQL macht APIs schneller, flexibler und entwicklerfreundlicher. Es kann sogar innerhalb einer IDE (Integrated Development Environment) namens GraphiQL bereitgestellt werden. Mit dieser Alternative zu REST können Entwickler Anfragen strukturieren, die mit einem einzigen API-Aufruf Daten aus mehreren Quellen gleichzeitig abrufen.

Außerdem können API-Maintainer mit GraphQL flexibel Felder hinzufügen oder entfernen, ohne dass dies bestehende Abfragen beeinträchtigt. Entwickler können APIs mit ihrer bevorzugten Methode erstellen, und die GraphQL-Spezifikation stellt sicher, dass die API für den Kunden auf vorhersehbare Weise funktioniert.

API-Entwickler erstellen mit GraphQL Schemata für alle möglichen Daten, die ein Kunde über diesen Service abfragen kann.

Ein GraphQL-Schema definiert, welche Objekttypen Sie anfordern können und welche Felder enthalten sein sollen.

GraphQL gleicht die eingehenden Abfragen mit dem Schema ab und führt die validierten Abfragen aus.

Der API-Entwickler verknüpft alle Felder eines Schemas mit einer Funktion namens Resolver. Während der Ausführung wird dieser Resolver aufgerufen, um den Wert zu erstellen.

Bild

Abgesehen von der Definition und Validierung der Syntax von API-Abfragen (wie im graphql-spec-Repository dargelegt) überlässt GraphQL die meisten anderen Entscheidungen dem API-Designer. GraphQL macht keinerlei Vorgaben, wie Daten gespeichert oder welche Programmiersprache benutzt werden soll. So können Entwickler PHP (graphql-php), Scala (Sangria), Python (Graphene Python), Ruby (graphql-ruby), JavaScript (graphql.js) oder viele andere Lösungen verwenden. Es stellt auch keine Anforderungen an Netzwerk, Autorisierung oder Paginierung.

Aus Kundensicht sind die gängigsten GraphQL-Operationen Abfragen und Mutationen. Wenn man dieses Konzept mit dem CRUD-Modell (Create, Read, Update und Delete) vergleichen möchte, käme es dem Vorgang Read am nächsten. Alle anderen Vorgänge (Create, Update und Delete) werden von Mutationen gehandhabt.

Kostenlose Testversion

Red Hat OpenShift API Management testen

Mit der 60-tägigen Self-Service-Testversion lernen Sie die Vorteile eines vollständig gemanagten API-Service kennen.

Sie möchten GraphQL in einer Geschäfts- oder Unternehmensumgebung ausprobieren? Dies bringt sowohl Vor- als auch Nachteile mit sich.

Vorteile

  • Mit einem GraphQL-Schema wird eine „Single Source of Truth" in einer GraphQL-Anwendung definiert. Dies bietet einer Organisation die Möglichkeit, ihre gesamten APIs zu föderieren, also unabhängig zusammenzuschließen.
  • GraphQL-Aufrufe werden in einem einzigen Round Trip gehandhabt. Der Kunde bekommt genau die Daten, die er angefragt hat (kein Over-Fetching).
  • Stark definierte Datentypen verringern das Risiko einer Fehlkommunikation zwischen Client und Server.
  • GraphQL ist introspektiv. So kann ein Kunde eine Liste der verfügbaren Datentypen anfordern. Dies ist ideal für automatisch erstellte Dokumente.
  • Eine Anwendungs-API kann sich mit GraphQL weiterentwickeln, ohne dass bestehende Abfragen beeinträchtigt werden.
  • Es gibt sehr viele Erweiterungen für Open Source-GraphQL, die Funktionen enthalten, die bei REST-APIs nicht verfügbar sind.
  • GraphQL schreibt keine spezifische Anwendungsarchitektur vor. Es kann auf einer vorhandenen REST-API installiert und mit aktuellen API-Management-Tools verwendet werden.

Nachteile

  • Für Entwickler, die sich bereits mit REST-APIs auskennen, bedeutet GraphQL weiteren Lernaufwand.
  • Mit GraphQL verschiebt sich die Funktionalität von Datenabfragen zur Serverseite, was zusätzliche Komplexität für Serverentwickler bedeutet.
  • Je nach Implementierung erfordert GraphQL ggf. andere Strategien des API-Managements als REST-APIs, speziell im Hinblick auf Rate Limits und Preise.
  • Auch das Caching ist bei GraphQL komplexer als bei REST.
  • API-Maintainer müssen außerdem verwaltbare GraphQL-Schemata schreiben.

Beispiel für eine GraphQL-Abfrage

Die Vorteile von GraphQL lassen sich am besten anhand von Beispielabfragen und -antworten darstellen. Hier sind drei Beispiele von der Graphql.org Projekt-Website.

Das erste Beispiel zeigt, wie ein Kunde GraphQL-Abfragen erstellen und mit der API spezifische Felder in der gewünschten Form zurückgeben kann.

{
  me {
    name
  }
}

Eine GraphQL API gibt höchstwahrscheinlich ein Ergebnis wie das folgende im JSON-Format zurück:

{
  "me": {
    "name": "Dorothy"
  }
}

Ein Kunde kann, wie in diesem Beispiel zu sehen, im Rahmen einer GraphQL-Abfrage auch Argumente weitergeben:

{
  human(id: "1000") {
    name
    location
  }
}

Das Ergebnis:

{
  "data": {
    "human": {
      "name": "Dorothy,
      "location": "Kansas"
    }
  }
}

Danach wird es interessant. Mit GraphQL können User wiederverwendbare Fragmente definieren und Variablen zuweisen.

Angenommen, Sie möchten eine Liste mit IDs und dann eine Reihe von Datensätzen für jede dieser IDs abfragen. Mit GraphQL können Sie eine Abfrage erstellen, mit der Sie alle benötigten Informationen in einem einzigen API-Aufruf abhandeln können.

So könnte diese Abfrage:

query HeroComparison($first: Int = 3) {
  leftComparison: hero(location: KANSAS) {
    ...comparisonFields
  }
  rightComparison: hero(location: OZ) {
    ...comparisonFields
  }
}

fragment comparisonFields on Character {
  name
  friendsConnection(first: $first) {
    totalCount
    edges {
      node {
        name
      }
    }
  }
}


folgendes Ergebnis zeigen:

{
  "data": {
    "leftComparison": {
      "name": "Dorothy",
      "friendsConnection": {
        "totalCount": 4,
        "edges": [
          {
            "node": {
              "name": "Aunt Em"
            }
          },
          {
            "node": {
              "name": "Uncle Henry"
            }
          },
          {
            "node": {
              "name": "Toto"
            }
          }
        ]
      }
    },
    "rightComparison": {
      "name": "Wizard",
      "friendsConnection": {
        "totalCount": 3,
        "edges": [
          {
            "node": {
              "name": "Scarecrow"
            }
          },
          {
            "node": {
              "name": "Tin Man"
            }
          },
          {
            "node": {
              "name": "Lion"
            }
          }
        ]
      }
    }
  }
}

Wenn Sie GitHub verwenden, können Sie sich über den GitHub GraphQL Explorer praktische Erfahrungen mit GraphQL aneignen.

GraphQL wurde von Facebook entwickelt und erstmals 2012 in Mobilanwendungen eingesetzt. Die GraphQL-Spezifikation wurde dann 2015 als Open Source-Lösung zur Verfügung gestellt. Mittlerweile wird sie von der GraphQL Foundation betreut.

Es gibt eine Vielfalt an Open Source-Projekten, die sich mit GraphQL beschäftigen. Die nachfolgende Liste ist nicht abschließend, enthält aber Projekte, die die Einführung von GraphQL erleichtern sollen.

  • Apollo, eine GraphQL-Plattform mit Frontend-Client-Library (Apollo Client) und Backend-Server-Framework (Apollo Server).
  • Offix, ein Offline-Client, mit dem GraphQL-Mutationen und -Abfragen auch dann ausgeführt werden können, wenn die Anwendung nicht erreichbar ist.
  • Graphback, ein Befehlszeilen-Client zur Erstellung von GraphQL-aktivierten Node.js Servern
  • OpenAPI-to-GraphQL, eine Befehlszeile und Library für die Übersetzung von APIs, die mit OpenAPI-Spezifikationen oder Swagger in GraphQL beschrieben werden.

Weiterlesen

Artikel

Was ist eine API?

APIs (Application Programming Interfaces) bestehen aus mehreren Definitionen und Protokollen zur Entwicklung und Integration von Anwendungssoftware.

Artikel

Wie funktioniert ein API-Gateway?

Ein API-Gateway ist ein API-Management-Tool, das zwischen einem Client und einer Ansammlung von Backend-Services sitzt.

Artikel

Warum Red Hat für APIs?

Unsere API-Lösungen sind auf Wiederverwendbarkeit und IT-Agilität ausgelegt und nutzen eine Managementoberfläche, mit der Sie Ihre Daten messen, überwachen und skalieren können.

Mehr über APIs erfahren

Produkte

Red Hat 3scale API Management

Eine Infrastrukturplattform, mit der sich APIs (Application Programming Interfaces) teilen, verteilen, kontrollieren und monetarisieren lassen.

Ressourcen

KURZDARSTELLUNG

Vorteile der betrieblichen Effizienz

E-Book

Agile Integration: Ein Blueprint für die Unternehmensarchitektur

Illustration - mail

Möchten Sie mehr zu diesen Themen erfahren?

Abonnieren Sie unseren kostenlosen Newsletter, Red Hat Shares.