我有一个操作getFoo
,要求对用户进行身份验证才能访问该资源。
用户使用突变authenticate
进行身份验证,例如
mutation {
authenticate (email: "foo", password: "bar") {
id
}
}
当用户通过身份验证时,会发生两件事:
但是,我想将身份验证和getFoo
方法调用合并到一个请求中,例如:
mutation {
authenticate (email: "foo", password: "bar") {
id
}
}
query {
getFoo {
id
}
}
后者产生语法错误。
有没有办法将变异与查询结合起来?
答案 0 :(得分:0)
根据GraphQL规范,无法在一个请求中发送变异和查询。
但是,您可以向突变有效负载添加任何字段。因此,如果只需要支持authenticate
突变的少数几个查询,您可以这样做,例如:
mutation {
authenticate (email: "foo", password: "bar") {
id
getFoo {
id
}
}
}
在一天结束时,最好保持变异和查询分开。如果你想在这样的许多突变中包含许多查询,它会很快变得毛茸茸。我在这里没有看到额外请求的开销问题。