我是GraphQL的新手,需要一些建议(最佳实践)来创建GraphQL中的突变(特别是graphene-python
)。假设我们有一些Task
和一个User
。现在我想创建Task
变异,其中包括三种情况:
Task
。Task
并将现有User
分配给此Task
。Task
并将新创建的User
分配给此Task
。那么,将这个实现为单个QraphQL"入口点"是一个好主意,还是为第三个案例(可能)创建另一个变异更好?
mutation {
createTask(taskTitle: "Do some stuff"){
task {
id
}
}
}
mutation {
createTask(taskTitle: "Do some stuff",
user: {id: "ggdf00askladnl42"}){
task {
id
}
}
}
mutation {
createTask(taskTitle: "Do some stuff",
user: {email: "j.doe@example.com", fullName: "John Doe"}){
task {
id
}
}
}
和graphene-python
中的相应变异:
class CreateTODO(graphene.Mutation):
class Arguments:
task_title = graphene.NonNull(graphene.String)
user = UserInput()
task = graphene.Field(lambda: Task)
def mutate(self, info, task_title, user=None):
#
# Do some stuff here
#
return CreateTODO(task=task)
答案 0 :(得分:0)
对于3.如果事实证明您无论如何都需要createUser
突变,那么它将成为一个更简单的实现来启动两个独立的突变:
createUser
createTask
(使用从createUser
但是,您无法将这两个突变合并为一个HTTP请求。