Схема(Schema)¶
Схема Schema
создается путем предоставления корневых(root
) типов для каждого вида операции, запроса и опционально мутации. Далее схема передается в валидатор validator
и исполнитель executor
.
my_schema = Schema(
query=MyRootQuery,
mutation=MyRootMutation,
)
Типы¶
В некоторых случаях схема не может получить доступ ко все типам, которые мы планируем написать. Например, когда поле возвращает интерфейс Interface
, схема может не знать о какой-либо его имплементации.
В таком случае, необходимо использовать аргумент types
при создании схемы.
my_schema = Schema(
query=MyRootQuery,
types=[SomeExtraObjectType, ]
)
Выполнение запросов¶
Чтобы выполнить запрос к схеме, вызовите ее метод execute
.
my_schema.execute('{ lastName }')
Автоматичекий CamelCase для имен полей¶
По дефолту все имена полей и аргументов (которые явно не заданы при помощи аргмента name
) будут конвертированы из snake_case
в camelCase
(так как API обычно используется клиентом на js/mobile).
Пример с ObjectType
:
class Person(graphene.ObjectType):
last_name = graphene.String()
other_name = graphene.String(name='_other_Name')
Имя поляlast_name
конвертируется в lastName
.
В случае, если вы не хотите применять данные изменения, передайте в конструктор поля Field
аргумент name
.
other_name
конвертируется в_other_Name
(без каких-либо преобразований в будущем).
Ваш запрос будет выглядеть так:
{
lastName
_other_Name
}
Для отключения такого поведения, при инстанцировании схемы установите флагauto_camelcase
в False
.
my_schema = Schema(
query=MyRootQuery,
auto_camelcase=False,
)