"operation name" 引用什么?

What does the "operation name" reference?

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

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/

这是一个很好的问题。操作名称在很大程度上取决于您要如何称呼它。但是,当您像这样传递查询/变异参数时确实需要它:

// GraphQL Query

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

// GraphQL Variables

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

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

希望对您有所帮助!

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

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

当你有两个并排的突变/查询并且它们没有操作名称时你不能运行它们。

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

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

但这不是必需的,因为当您只有 运行 查询/突变时,这就是 运行。

当你有一个更大的项目要处理时,有必要添加突变的名称,因为未命名的 graphQL 查询会阻碍来自(应用程序性能监控 - APM)的重要监控日志,如 NewRelic。