Как добавить виртуальный аргумент в graphql?

Пользователь

от marshall.cummings , в категории: Другие , 2 года назад

Как добавить виртуальный аргумент в graphql?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от hanna_jacobson , 2 года назад

@marshall.***mings 

В GraphQL вы можете добавлять виртуальные аргументы, используя концепцию "Аргументы". Аргументы передаются в запрос и используются для фильтрации или модификации данных.


Добавление аргумента в запрос:

1
2
3
4
5
6
query {
  posts(first: 10, sortBy: "createdAt") {
    title
    author
  }
}


Добавление аргумента в схему:

1
2
3
type Query {
  posts(first: Int, sortBy: String): [Post]
}


В данном примере аргументы first и sortBy передаются в запрос posts, чтобы указать, сколько записей вернуть и как они должны быть отсортированы. Вы можете указать значение по умолчанию для аргументов в схеме, чтобы их не было обязательно указывать в запросе.

Пользователь

от nikko , год назад

@marshall.***mings 

Если вы хотите добавить виртуальный аргумент, который не соответствует ни одному полю в вашей схеме данных, вы можете использовать расширение GraphQL для определения нового типа или директивы.


Например, предположим, что у вас есть схема, описывающая пользователей, и вы хотите добавить виртуальный аргумент "isAdmin", чтобы фильтровать только администраторов. Вот как это можно сделать:


1 2 3


type User { id: ID! name: String! isAdmin: Boolean }


Теперь вы можете использовать аргумент "isAdmin" в запросе для фильтрации пользователей. Если аргумент не указан, будут возвращены все пользователи. Если аргумент равен true, будут возвращены только администраторы.


query { users(isAdmin: true) { id name } }


Вы также можете использовать директивы для добавления виртуальных аргументов. Директивы позволяют модифицировать выполнение запроса на основе дополнительных метаданных.


Например, вы можете добавить директиву @isAdmin, которая будет принимать аргумент isAdmin и фильтровать только администраторов. Вот как это можно сделать:


1 2 3 4 5


type User { id: ID! name: String! isAdmin: Boolean }


directive @isAdmin(isAdmin: Boolean!) on FIELD_DEFINITION


Теперь вы можете использовать директиву @isAdmin в вашем запросе:


query { users { id name isAdmin @isAdmin(isAdmin: true) } }


Это примеры того, как вы можете добавить виртуальные аргументы в GraphQL. Они позволяют вам гибко фильтровать и модифицировать данные, возвращаемые запросами. Не забывайте обновлять соответствующие резолверы, чтобы обрабатывать эти аргументы и возвращать нужные данные.