我是 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
参数(除了query
和variables
)。通过这样做,告诉 GraphQL 服务执行该特定操作并忽略所有其他操作。在未指定 operationName
的情况下发送多个操作——或包含多个未命名的操作将导致请求失败。
除上述之外,如@jo_va 所述,提供操作名称的唯一其他目的是用于调试或供客户端使用。例如,apollo-link-watched-mutation
使用操作名称来解决 Apollo 客户端的常见缓存问题。
关于graphql - GraphQL 操作名称是否会改变查询行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55929033/