我正在学习将django-graphene
用于graphql。
对于突变,我所知道的是它将返回自己的错误消息。
假设我有一个 token 字段,并检查 token 字段是否坏,我只知道如何使用return None
,它将为前端提供null
的查询结果,而不是针对状态和错误的自定义json响应
我有这些代码
class ProductType(DjangoObjectType):
class Meta:
model = Product
filter_fields = {'description': ['icontains']}
interfaces = (graphene.relay.Node,)
class ProductInput(graphene.InputObjectType):
token = graphene.String()
title = graphene.String()
barcode = graphene.String(required=True)
class CreateProduct(graphene.Mutation):
class Arguments:
product_input = ProductInput()
product = graphene.Field(ProductType)
def mutate(self, info, product_input=None):
if not product_input.get('token'):
return None # instead of return None, I would like to return error code, status with message
product = Product.objects.create(barcode=product_input.barcode, title=product_input.title)
return CreateProduct(product=product)
class ProductMutation(graphene.ObjectType):
create_product = CreateProduct.Field()
提前致谢
最佳答案
除了return None
之外,您还可以引发异常。异常将由石墨烯处理并作为错误传递。
例如,raise Exception('Error 123456')
将导致类似以下的响应
{
"errors": [
{
"message": "Error 123456'",
"locations": [
{
"line": 1,
"column": 3
}
]
}
],
"data": {
"product": null
}
}
输出JSON中
errors
的存在可以触发前端错误处理。请注意,通常,传递给graphql的任何异常对外界都是可见的,因此值得考虑所有石墨烯查询和突变异常的安全性。
关于django - 如何为django-graphene中的错误返回定制的JSON响应?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47625628/