Объектные типы (ObjectTypes)

Объектный тип ObjectType является единственным источником информации о ваших данных. Он содержит основные поля и определяет поведение данных, которые вы запрашиваете.

Основы:

  • Каждый ObjectType это класс Python, который наслеедуется отgraphene.ObjectType.
  • Каждый аттрибут the ObjectTypeпредставляет собойField.

Пример

В данном примере описывается модель Person с именем и фамилией.

import graphene

class Person(graphene.ObjectType):
    first_name = graphene.String()
    last_name = graphene.String()
    full_name = graphene.String()

    def resolve_full_name(self, info):
        return '{} {}'.format(self.first_name, self.last_name)

first_name и last_name это поля ObjectType.

Каждое поле определяется как аттрибут класса и каждый аттрибут сопоставляется с полем Field.

ВышееуказанныйPersonтип имеет следующее представление в Вашей схеме:

type Person {
  firstName: String
  lastName: String
  fullName: String
}

Резолверы (Resolvers)

Резолвер это такой метод, который определяет какие данные будут отданы при запросе данного поля ObjectType.

Если неуказан явно, резолвером поля является методresolve_{field_name}.

Стандартно резолвер принимает следующие аргументы:info, **args.

Примечание: РезолверыObjectTypeявляются статичными методамиstaticmethod, так что первый аргумент резолвераself(илиroot) не обязан быть сущностьюObjectType.

Пример

В данном примере определен объектный тип запросаQuery, у которого есть поле reverse , которое в свою очередь возвращает перевернутый аргументword, используя резолвер-метод resolve_reverse.

import graphene

class Query(graphene.ObjectType):
    reverse = graphene.String(word=graphene.String())

    def resolve_reverse(self, info, word):
        return word[::-1]

Резолверы снаружи класса

Поле может использовать кастомный резолвер снаружи класса:

import graphene

def reverse(root, info, word):
    return word[::-1]

class Query(graphene.ObjectType):
    reverse = graphene.String(word=graphene.String(), resolver=reverse)

Сущности как контейнеры данных

В GrapheneObjectType также могут быть использованы как контейнеры. Например:

peter = Person(first_name='Peter', last_name='Griffin')

peter.first_name # prints "Peter"
peter.last_name # prints "Griffin"

results matching ""

    No results matching ""