Ga naar inhoud

Variabelen

Om te voorkomen dat alle waarden hard worden gecodeerd bij het werken met GraphQL, biedt de API Explorer een sectie Variabelen waarin een JSON-object kan worden toegevoegd. De sleutels op het hoogste niveau van het JSON-object worden beschikbaar gemaakt als variabelen die namen hebben die worden aangeduid met een dollarteken ($KEY_NAME). Dit zorgt voor een veel aangenamere ontwikkelervaring bij het schrijven en testen van dynamische queries, mutaties en abonnementen.

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

alt text

Sommige dynamische invoer moet mogelijk worden toegevoegd wanneer u een verzoek naar uw GraphQL-server verzendt, terwijl het operatiedocument hetzelfde blijft. Dit zijn de variabelen van uw operatie. Variabelen moeten getypeerde argumenten zijn die in de GraphQL-operatie worden gedeclareerd. Omdat GraphQL statisch is getypeerd, kan worden gevalideerd of u de juiste variabelen doorgeeft.

De volgende twee voorbeelden zouden samenwerken om een lijst met gebruikers op te vragen met de status “Actief” en wiens namen beginnen met “M”.

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

Variabelen zijn niet beperkt tot enkele invoerwaarden. Het kunnen complexe objecten zijn met elk gedeclareerd type in een bepaalde werkruimte - native of aangepast. Hierdoor kunnen zaken als volledige filters, sorteringen en vele andere dynamisch als variabelen worden doorgegeven.

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