Скаляры (Scalars)

Graphene определяет следующие базовые типы Scalar:

  • graphene.String
  • graphene.Int
  • graphene.Float
  • graphene.Boolean
  • graphene.ID

Graphene также предоставляет кастомные Scalars для дат, времени и JSON:

  • graphene.types.datetime.DateTime
  • graphene.types.datetime.Time
  • graphene.types.json.JSONString

Кастомные скаляры(scalars)

Вы можете создавать кастомные Scalar для Вашей схемы. Пример создания datetime scalar:

import datetime
from graphene.types import Scalar
from graphql.language import ast

class DateTime(Scalar):
    '''DateTime Scalar Description'''

    @staticmethod
    def serialize(dt):
        return dt.isoformat()

    @staticmethod
    def parse_literal(node):
        if isinstance(node, ast.StringValue):
            return datetime.datetime.strptime(
                node.value, "%Y-%m-%dT%H:%M:%S.%f")

    @staticmethod
    def parse_value(value):
        return datetime.datetime.strptime(value, "%Y-%m-%dT%H:%M:%S.%f")

Монтирование скаляров (scalars)

Scalars монтируются в объектные типыObjectType, интерфейсыInterface или мутацииMutation, и ведут себя как поляField.

class Person(graphene.ObjectType):
    name = graphene.String()

# Is equivalent to:
class Person(graphene.ObjectType):
    name = graphene.Field(graphene.String)

Примечание: при использовании конструктораField напрямую, передавайте тип, а не сущность.

Типы, смонтированные в полеField, ведут себя как аргументы Argument.

graphene.Field(graphene.String, to=graphene.String())

# Is equivalent to:
graphene.Field(graphene.String, to=graphene.Argument(graphene.String))

results matching ""

    No results matching ""