Das GraphQL-Typsystem verstehen

Von skalaren und benutzerdefinierten Typen bis zu Objekten und Root-Operationen – wir erklären Ihnen die Grundlagen des GraphQL Typsystems und wie sie ein vollständiges GraphQL-Schema bilden.

Skalare Typen

Beginnen wir mit den skalaren Typen, die die grundlegenden Bausteine in einem GraphQL-Schema darstellen. Skalare Typen repräsentieren einfache, primitive Werte. GraphQL bietet fünf eingebaute skalare Typen:

  1. Int: Dieser Typ repräsentiert ganze Zahlen ohne Dezimalstellen. Beispielsweise: 42.
  2. Float: Float steht für Fließkommazahlen, also Zahlen mit Dezimalstellen. Zum Beispiel: 3.14.
  3. String: Hierbei handelt es sich um Zeichenketten, die Text darstellen. Zum Beispiel: „Hallo, Welt!“.
  4. Boolean: Dieser Typ hat nur zwei mögliche Werte: true oder false. Ein gutes Beispiel wäre: true.
  5. ID: ID steht für eine eindeutige Kennung. Sie wird immer als Zeichenkette übertragen, selbst wenn sie numerisch ist. Zum Beispiel: „abc123“.

Darüber hinaus können Sie benutzerdefinierte skalare Typen erstellen, um spezifische Anforderungen zu erfüllen. Beispielsweise könnten Sie einen „Date“ oder „Time“ Typ erstellen.

Enum-Typen

Der Enum-Typ (auch Enumerator-Typ) ermöglicht es, eine Liste von festen Werten zu definieren. Enums sind hilfreich, wenn Sie die Antwort genauer kontrollieren möchten. Zum Beispiel könnten Sie Enums verwenden, um die Jobs oder Spezies von Charakteren in einem Spiel festzulegen.

Nicht-Null- und Listen-Typen

In GraphQL sind alle Typen standardmäßig nullable, was bedeutet, dass sie null sein können. Um einen Typen als nicht null zu deklarieren, fügen Sie ein Ausrufezeichen hinzu, wie in „String!“. Dies garantiert, dass das Feld immer einen Wert zurückgibt.

Listen-Typen, die durch eckige Klammern angegeben werden, repräsentieren Sammlungen von Werten desselben Typs. Zum Beispiel, „[String]“ definiert eine Liste von Zeichenketten.

Sie können Nicht-Null- und Listen-Typen kombinieren, um beispielsweise eine nicht leere Liste von Zeichenketten zu erstellen: „[String!]“.

Objekttypen

Objekttypen bilden die „Zweige“ eines GraphQL-Schemas und repräsentieren komplexe Datenstrukturen. Sie bestehen aus benannten Feldern und den Typen, die diese Felder auflösen. Ein Objekttyp wird mit dem Schlüsselwort „type“ definiert. Zum Beispiel könnten Sie einen „User“-Objekttyp erstellen, der die Felder „name“ (String) und „email“ (String) enthält.

Root-Operationstypen

In einem GraphQL-Schema gibt es drei spezielle Objekte, die als Einstiegspunkte dienen: Query, Mutation und Subscription. Der „Query“-Typ ermöglicht das Lesen von Daten und entspricht einem REST GET-Request. „Mutation“ ist für Schreiboperationen wie POST oder PUT in REST. „Subscription“ ermöglicht die Verfolgung von Ereignissen und wird oft in Verbindung mit Websockets verwendet.

Feldargumente

Felder in GraphQL-Objekten können Argumente akzeptieren, um Abfragen genauer zu steuern. Zum Beispiel, wenn Sie nach einem bestimmten Benutzer anhand seiner ID suchen möchten, können Sie ein Feld „user“ erstellen, das eine ID als Argument erwartet.

Interface-Typen

Interface-Typen ermöglichen die Definition einer gemeinsamen Menge von Feldern, die von verschiedenen Objekten geteilt werden können. Dies ist nützlich zu verstehen, wenn mehrere Objekte ähnliche Felder haben. Zum Beispiel könnten verschiedene Charaktertypen (Kämpfer, Zauberer, Heiler) ein gemeinsames „Character“-Interface implementieren.

Union-Typen

Union-Typen ermöglichen es, mehrere verschiedene Objekttypen in einem einzigen Typ zu vereinen. Sie sind nützlich, wenn ein Feld unterschiedliche Typen zurückgeben kann. Zum Beispiel könnten Sie eine „SearchResult“-Union erstellen, die sowohl „User“- als auch „Post“-Objekte enthält.

Kostenlosen Account erstellen

Registrieren Sie sich jetzt und erhalten Sie Zugang zu unseren Cloud Produkten.

Das könnte Sie auch interessieren: