查询类型(查询/突变)之后的字符串的重要性GraphQL

Mel*_*991 7 graphql graphql-js

我想知道查询类型后面的字符串的重要性(在本例中为“ ProvisionQueues”),从字符串中删除它似乎没有任何影响-仅用于日志记录还是其他。元数据?

mutation ProvisionQueues {
 createQueue(name: "new-queue") {
    url
  }
}
Run Code Online (Sandbox Code Playgroud)

Eri*_*per 7

该字符串是操作名称。如果您未指定名称,则该操作称为匿名操作。实际的时候,我还是喜欢总是指定一个操作名称,因为这样可以简化诸如读取堆栈跟踪之类的操作。

似乎从字符串中删除它不会影响任何东西

仅在执行单个操作时才能使用匿名操作。例如,以下结果将导致错误:

query {
  user(id: 1) {
    name
  }
}

query {
  user(id: 2) {
    name
  }
}
Run Code Online (Sandbox Code Playgroud)

错误:

"message": "This anonymous operation must be the only defined operation."
Run Code Online (Sandbox Code Playgroud)

如果您想了解更多信息,可以查看GraphQL规范

如果文档仅包含一个操作,则该操作可能未命名或以简写形式表示,从而省略了查询关键字和操作名称。否则,如果GraphQL查询文档包含多个操作,则必须命名每个操作。