graphql - GraphQL 操作名称是否会改变查询行为?

标签 graphql

我是 GraphQL 的新手。我仍在了解基本概念和语言。在问我的问题时,我可能会说一些大错特错的话——如果我这样做,我将不胜感激。

简短的问题:操作的名称对查询的行为有影响吗?

也就是说,我的理解是,给定一个看起来像这样的 GraphQL 查询

query SomeQueryName {
    flower {
        name
        petal_number
    }
} 

那个query是操作类型,SomeQueryName是操作名称。

在解析查询时是否使用过这些名称?或者它们是否严格来说是客户程序员在编写查询时可以包含的内容,以帮助他们组织自己的代码?或者我没有想到的其他事情。

最佳答案

操作的名称与解析操作中的字段无关。 但是,当单个 GraphQL 文档中存在多个操作定义时,它是相关的。 From the spec :

To execute a request, the executor must have a parsed Document and a selected operation name to run if the document defines multiple operations, otherwise the document is expected to only contain a single operation.

换句话说,您的请求可以包括这样的文件:

query Query1 {
  someField
}

query Query2 {
  someOtherField
}

当存在多个命名操作时,客户端还必须指定一个operationName参数(除了queryvariables)。通过这样做,告诉 GraphQL 服务执行该特定操作并忽略所有其他操作。在未指定 operationName 的情况下发送多个操作——或包含多个未命名的操作将导致请求失败。

除上述之外,如@jo_va 所述,提供操作名称的唯一其他目的是用于调试或供客户端使用。例如,apollo-link-watched-mutation 使用操作名称来解决 Apollo 客户端的常见缓存问题。

关于graphql - GraphQL 操作名称是否会改变查询行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55929033/

相关文章:

meteor - 如何将参数传递给graphql查询?

javascript - apollo graphql 突变 - JSON 输入意外结束

graphql - Apollo 客户端给我一个错误 'store already contains an id' - 这是什么意思?

node.js - 测试安全的 graphql 订阅

graphql - 将变量传递给 `mutation` apollographql 服务器

graphql - 如何让 Cypress 动态更新夹具到 graphql 调用

javascript - 如何拆分长 GraphQL 模式

express - GraphQL 字段的解析器未被调用

javascript - 如何在 gatsby 的 graphql 查询中使用正则表达式

带有 JSON 补丁的 GraphQL 突变