来自 DRF 序列化程序的 GraphQL 响应错误消息
Posted
技术标签:
【中文标题】来自 DRF 序列化程序的 GraphQL 响应错误消息【英文标题】:GraphQL response error message from DRF serializer 【发布时间】:2020-03-18 17:37:20 【问题描述】:我可以使用 Django 作为后端在 GraphQL 中创建 CRUD。我的Mutation
是基于DRF
序列化程序的元类。
我使用术语 DRF, GraphQL, serializer, ... etc
进行了搜索。大多数将是与制作端点相关的主题,但它没有详细说明response
错误消息。大多数时候我发现 DRF 没有 GraphQL 答案
class Question(models.Model):
question_text = models.CharField(max_length=50)
class QuestionSerializer(serializers.ModelSerializer):
class Meta:
model = Question
fields = (
'id',
'question_text',
)
class QuestionSerializerMutation(SerializerMutation):
class Meta:
serializer_class = QuestionSerializer
model_operation = ['crated', 'update']
lookup_field = 'id'
class Mutation(graphene.ObjectType):
xxx = QuestionSerializerMutation.Field()
身体
mutation
xxx(input: questionText: "a;lsfjkdsajfdsjf;sjfsajdfkd;lsafjl;asfdsjf;lajflsadjf;alsjf;lasfsj")
id
questionText
预期结果:
GraphQL 从 Serializer
返回错误消息,因为我的有效负载超过 50 个字符
原样:
没有错误消息引发
"data":
"xxx":
"id": null,
"questionText": null
问题:
在 GraphQL 中如何使用 serializer.error
响应?
【问题讨论】:
【参考方案1】:您应该查询具有field
和messages
的errors
mutation
xxx(input: questionText: "a;lsfjkdsajfdsjf;sjfsajdfkd;lsafjl;asfdsjf;lajflsadjf;alsjf;lasfsj")
id
questionText
errors
field
messages
我实际上在这里写了一个 CRUD django-graphene rest 序列化程序库,也可以查看示例:https://github.com/topletal/django-model-mutations,我相信原始序列化程序突变工作类似
【讨论】:
以上是关于来自 DRF 序列化程序的 GraphQL 响应错误消息的主要内容,如果未能解决你的问题,请参考以下文章