Einführung
GraphQL ist eine Abfragesprache, die wir für unsere API verwenden. Der Vorteil der Verwendung von GraphQL gegenüber anderen Methoden besteht darin, dass wir nur die Daten anfordern können, die wir benötigen. Alle Anforderungen werden über einen einzelnen Endpunkt gestellt, indem eine Abfragezeichenfolge zusammen mit Variablen gesendet wird, um genau anzugeben, welche Daten erforderlich sind.
Abfragen und Mutationen
Anfragen werden in zwei Typen unterteilt: Abfragen
und Mutationen
. Konventionell werden Abfragen zum Anfordern von Daten und Mutationen zum Schreiben von Daten verwendet. Schauen wir uns ein Beispiel für eine Abfrage an, um zu sehen, wie Abfragen und Mutationen strukturiert sind.
{user {xcoobee_id user_type first_name last_name}}
In diesem Beispiel fragen wir das Benutzerfeld ab und fordern vom Benutzer verschiedene Datentypen an. Weitere Informationen zu GraphQL finden Sie in der Dokumentation Hier.
XcooBee GraphQL
Es gibt bestimmte Funktionen unserer GraphQL-Implementierung, die in der allgemeinen Dokumentation nicht enthalten sind. Mal sehen, was diese Funktionen sind.
Cursor
Cursor sind undurchsichtige Objektreferenzen, mit denen auf Dinge wie Bienen, Benutzer und Transaktionen verwiesen werden kann. Diese werden häufig zur Paginierung verwendet.
Verbindungen
Wir verwenden eine Verbindung, wenn wir etwas anderes als ein einzelnes Objekt zurückgeben möchten. Wenn wir beispielsweise mehrere Benutzer aus der Benutzerabfrage zurückgeben möchten, fordern wir das Datenfeld von an userConnection
mit den Datentypen, die wir von diesen Benutzern benötigen. Wir können auch Paginierungsinformationen von Verbindungen erhalten. Das Seiteninfo
Feld gibt ein zurück end_cursor
und has_next_page
.
Ein end_cursor
zeigt auf das letzte Objekt auf einer Seite. Es kann an den Parameter after übergeben werden, um die nächste Datenseite abzurufen.
Hinweis: Dieser Cursor kann nur zur Paginierung verwendet werden.
has_next_page
lässt Sie wissen, ob eine andere Seite angefordert werden muss.
Möglicherweise wird auch eine Benutzerverbindung zurückgegeben komplette Anzahl
Hier erfahren Sie, wie viele Objekte von einer Abfrage zurückgegeben werden können. Auf diese Weise können Sie die Anzahl der Seiten bestimmen, ohne sich darauf verlassen zu müssen has_next_page
.
Beispiel
Wir können anhand eines Beispiels einer Abfrage, die beide verwendet, sehen, wie Cursor und Verbindungen funktionieren.
Abfragesalden ($user_cursor: String! $first: Int) {Salden (user_cursor: $user_cursor, first: $first) {Daten {Typ Währungsdatum} page_info {has_next_page}}}
In diesem Beispiel verwenden wir user_cursor
um auf den Benutzer zu verweisen, dessen Guthaben wir anfordern.
Wir fordern das Datenfeld mit den gesuchten Feldern an: Art
, Währung
, und Datum
. Wir fordern auch Informationen darüber an, ob eine andere Seite abgerufen werden muss.
Zum Beispiel, wenn wir bestanden haben 5
In das erste Argument würden wir bis zu fünf Salden zurückgeben. Wenn ein Benutzer vier Guthaben hätte, würden die ersten vier Guthaben zurückgegeben und has_next_page
wäre falsch. Wenn ein Benutzer sechs Guthaben hätte, würden stattdessen fünf Guthaben zurückgegeben, und has_next_page
würde wahr zurückgeben.