如何解决使用Graphene
这是使用Python和Graphene库的。
我想通过GraphQL向我的前端提供一个常量列表。我走了使用检查的路线,但是它只会输出枚举的键。不是值。我了解到石墨烯枚举仅包含名称/描述。
{
__type(name: "FruitEnum") {
enumValues {
name
description
}
}
}
这将返回
{
"data": {
"__type": {
"enumValues": [
{
"name": "APPLE","description": null
},{
"name": "BANANA",{
"name": "ORANGE","description": null
}
]
}
},"errors": null
}
这是实际枚举的样子
class FruitEnum(Enum):
APPLE = "Apple -- but Could also be other information for the front end"
BANANA = "Banana"
ORANGE = "Orange"
是否有通过GraphQL公开这样的常量列表的首选方法?可以使用解析器修改自省以读取值吗?我正在使用常规的Python枚举,并使用Enum.from_enum函数将其注册到Graphene。
解决方法
我认为您不是从 enumValues
中添加或删除字段的人,因为这是标准操作。
但是,您可以通过在枚举类中指定 description
property
来添加描述。
import graphene
from enum import Enum as PyEnum
class FruitEnum(PyEnum):
APPLE = "Apple"
BANANA = "Banana"
ORANGE = "Orange"
def get_field_description(self):
mapper = {
"default": "default description","APPLE": "Apple description"
}
return mapper.get(self.name,mapper['default'])
@property
def description(self):
return self.get_field_description()
class FruitType(graphene.ObjectType):
foo = graphene.Enum.from_enum(FruitEnum)()
因此,您将得到一个响应,
{
"data": {
"__type": {
"name": "FruitEnum","enumValues": [
{
"name": "APPLE","description": "Apple description"
},{
"name": "BANANA","description": "default description"
},{
"name": "ORANGE","description": "default description"
}
]
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。