“操作名称”引用了什么?

时间:2016-06-24 20:48:26

标签: graphql

我正在学习GraphQL,我对operation namequery之后的mutation查询部分非常感兴趣(取决于根查询类型) 。我发现了几个使用操作名称的代码示例,我对它们来自哪里感到困惑?在代码中似乎没有关于它们的引用,它们似乎完全是任意的。

query Welcome {
  echo (email: "hi@example.com")
}

query HeroNameQuery {
  hero {
    name
  }
}

我不明白为什么给定的架构不能只包含后面的查询和类型(例如userarticleorder等等,而我不了解命名空间系统,操作名称提供了任何优势。

https://github.com/mugli/learning-graphql/blame/master/7.%20Deep%20Dive%20into%20GraphQL%20Type%20System.md#L436

http://graphql.org/docs/queries/

3 个答案:

答案 0 :(得分:8)

在GraphiQL中,您可以从操作名称指定的查询列表中进行选择。这里有一些屏幕截图可以帮助您理解这一点。

enter image description here

如果您有两个并排的突变/查询,并且他们没有操作名称,则无法运行它们。

当他们有操作名称时,可以在单击播放/运行按钮时列出它们。

enter image description here

这是迄今为止我见过的操作名称的最大案例。

但这并不是必要的,因为当你只是运行查询/变异时,它会运行什么。

enter image description here

答案 1 :(得分:5)

Query / Mutation名称是可选的。如果您的后端支持,您可以在后端使用它来存储查询。但是,它通常用于记录。您可以为每个查询/突变使用唯一的名称。然后,当您遇到问题时,可以在日志中查找查询名称,以查看该特定查询的内容。

答案 2 :(得分:3)

这是一个很好的问题。操作名称几乎取决于您想要的内容。但是,当您传递查询/变异参数时,确实需要它:

// GraphQL Query

query Welcome ($data: String!) {
  echo (email: $data) {
    name
  }
}

// GraphQL Variables

{
  "data": "hi@example.com"
}

对于返回字段,您必须写出给定类型选择的子字段,因为GraphQL的理念是所有内容都是强类型的,并且客户端指示完全它需要什么数据到了子场。

希望这有帮助!