Перейти к содержимому

Переменные

Чтобы избежать жёсткого кодирования всех значений при работе с GraphQL, API Explorer предоставляет раздел Variables, в который можно добавить JSON-объект. Ключи верхнего уровня JSON-объекта становятся доступными как переменные с именами, обозначенными знаком доллара ($KEY_NAME). Это обеспечивает гораздо более приятный опыт разработки при написании и тестировании динамических запросов, мутаций и подписок.

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

alt text

Некоторые динамические входные данные могут потребоваться при отправке запроса на ваш сервер GraphQL, в то время как документ операции остаётся неизменным. Это переменные вашей операции. Переменные должны быть типизированными аргументами, объявленными в операции GraphQL. Поскольку GraphQL статически типизирован, можно проверить, передаёте ли вы правильные переменные.

Следующие два примера будут работать вместе для запроса списка пользователей со статусом “Активный” и именами, начинающимися с “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

Переменные не ограничены одиночными входными значениями. Они могут быть сложными объектами с любым объявленным типом в данном рабочем пространстве — нативным или пользовательским. Это позволяет динамически передавать такие вещи, как целые фильтры, сортировки и многое другое в качестве переменных.

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