我正在学习GraphQL,我对operation name
或query
之后的mutation
查询部分非常感兴趣(取决于根查询类型) 。我发现了几个使用操作名称的代码示例,我对它们来自哪里感到困惑?在代码中似乎没有关于它们的引用,它们似乎完全是任意的。
query Welcome {
echo (email: "hi@example.com")
}
和
query HeroNameQuery {
hero {
name
}
}
我不明白为什么给定的架构不能只包含后面的查询和类型(例如user
,article
,order
等等,而我不了解命名空间系统,操作名称提供了任何优势。
答案 0 :(得分:8)
在GraphiQL中,您可以从操作名称指定的查询列表中进行选择。这里有一些屏幕截图可以帮助您理解这一点。
如果您有两个并排的突变/查询,并且他们没有操作名称,则无法运行它们。
当他们有操作名称时,可以在单击播放/运行按钮时列出它们。
这是迄今为止我见过的操作名称的最大案例。
但这并不是必要的,因为当你只是运行查询/变异时,它会运行什么。
答案 1 :(得分:5)
Query / Mutation名称是可选的。如果您的后端支持,您可以在后端使用它来存储查询。但是,它通常用于记录。您可以为每个查询/突变使用唯一的名称。然后,当您遇到问题时,可以在日志中查找查询名称,以查看该特定查询的内容。
答案 2 :(得分:3)
这是一个很好的问题。操作名称几乎取决于您想要的内容。但是,当您传递查询/变异参数时,确实需要它:
// GraphQL Query
query Welcome ($data: String!) {
echo (email: $data) {
name
}
}
// GraphQL Variables
{
"data": "hi@example.com"
}
对于返回字段,您必须写出给定类型选择的子字段,因为GraphQL的理念是所有内容都是强类型的,并且客户端指示完全它需要什么数据到了子场。
希望这有帮助!