Zum Inhalt springen

Variablen

Um beim Arbeiten mit GraphQL nicht alle Werte fest zu codieren, bietet der API Explorer einen Variablen-Bereich, in dem ein JSON-Objekt hinzugefügt werden kann. Die Schlüssel der obersten Ebene des JSON-Objekts werden als Variablen verfügbar gemacht, deren Namen durch ein Dollarzeichen ($KEY_NAME) gekennzeichnet sind. Dies ermöglicht eine viel angenehmere Entwicklungserfahrung beim Schreiben und Testen dynamischer Abfragen, Mutationen und Abonnements.

query MyQuery1 ($domain: String) {
students(
filter: {
email: {
contains: $domain
}
}
) {
items {
id
firstName
email
}
}
}
{
"domain": "example.com"
}

alt text

Einige dynamische Eingaben müssen möglicherweise hinzugefügt werden, wenn Sie eine Anfrage an Ihren GraphQL-Server senden, während das Operationsdokument gleich bleibt. Dies sind die Variablen Ihrer Operation. Variablen müssen typisierte Argumente sein, die in der GraphQL-Operation deklariert werden. Da GraphQL statisch typisiert ist, kann validiert werden, ob Sie die richtigen Variablen übergeben.

Die folgenden zwei Beispiele würden zusammenarbeiten, um eine Liste von Benutzern mit dem Status “Aktiv” abzufragen, deren Namen mit “M” beginnen.

query MyQuery1($name_start: String, $status: Boolean) {
students(
filter: {
firstName: {
starts_with: $name_start
},
isActive: {
equals: $status
}
}
) {
items {
id
firstName
email
}
}
}
{
"name_start": "M",
"status": true
}

alt text

Variablen sind nicht darauf beschränkt, einzelne Eingabewerte zu sein. Sie können komplexe Objekte mit jedem deklarierten Typ in einem bestimmten Arbeitsbereich sein - nativ oder benutzerdefiniert. Dies ermöglicht es, Dinge wie ganze Filter, Sortierungen und viele andere dynamisch als Variablen zu übergeben.

query MyQuery (
$filter: StudentsFilter
$first: Int
$orderBy: StudentsOrderBy
) {
students(
filter: $filter
first: $first
orderBy: $orderBy
) {
count
items {
id
firstName
lastName
age
}
}
}
{
"filter": {
"email": { "contains": "example" },
"firstName": { "starts_with": "M" }
},
"orderBy": { "lastName": "ASC"},
"first": 2
}

alt text