GraphQL笔记

GraphQL


Types Reference

Enumes(枚举类型):
# 定义
import graphene
from enum import Enum

class Episode(graphene.Enum):
    NEWHOPE = 4
    EMPIRE = 5
    JEDI = 6
	
    @property
    def description(self):
    # 对该类型参数做具体描述
        if self == Episode.NEWHOPE:
            return 'New Hope Episode'
        return 'Other episode'


# 等价于 -> Episode = graphene.Enum('Episode', [('NEWHOPE', 4), ('EMPIRE', 5), ('JEDI', 6)])

可以使用如下方法对已经定义过的描述进行修改:

graphene.Enum.from_enum(AlreadyExistingPyEnum, description=lambda value: return 'foo' if value == AlreadyExistingPyEnum.Foo else 'bar')

Notes:

python内置的Enum类型和graphene定义的Enum类型并不完全同

如果使用内置的Enum类型可以:

from enum import Enum
class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3

assert Color(1) == Color.RED

如果使用graphene定义的Enum类型需要使用.get()方法

from graphene import Enum
class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3

assert Color.get(1) == Color.RED
Scalars(标量类型):

所有标量类型都接受以下参数。 所有都是可选的

name:string
description: string
required: bool
deprecation_reason: string
default_value: any
Base scalars(基本标量)
graphene.String
graphene.Int
graphene.Float
graphene.Boolean
graphene.ID
# 表示唯一标识符,通常用于重新获取对象或作为缓存的键。ID类型作为String出现在JSON响应中; 但是,它并不是人类可读的。当预期作为输入类型时,任何字符串(例如“4”)或整数(例如4)输入值都将被接受为ID。
graphene.types.datetime.Date
# 表示由iso8601指定的Date值。
graphene.types.datetime.DateTime
# 表示由iso8601指定的DateTime值。
graphene.types.datetime.Time
# 表示由iso8601指定的Time值。
graphene.types.json.JSONString
# 表示JSON字符串。
Custom scalars(自定义标量)

您可以为架构创建自定义标量。以下是创建DateTime标量的示例:

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


class DateTime(Scalar):
    '''
        DateTime Scalar description
    '''

    @staticmethod
    def serializer(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")

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值