你能解释一下GraphQL POST请求中的术语吗

你能解释一下GraphQL POST请求中的术语吗,graphql,graphql-js,apollo,Graphql,Graphql Js,Apollo,在Apollo Developers文档中,有一个GraphQL中post请求的有效主体的示例 { "query": "query aTest($arg1: String!) { test(who: $arg1) }" } 从我在Apollo Server中看到的情况来看,此查询也适用于: { "query": "aTest($arg1: String!) { test(who: $arg1) }" } 有人能解释一下为什么“查询”在第一个例子中出现两次吗?GraphQL服务

在Apollo Developers文档中,有一个GraphQL中post请求的有效主体的示例

{
    "query": "query aTest($arg1: String!) { test(who: $arg1) }"
}
从我在Apollo Server中看到的情况来看,此查询也适用于:

{
    "query": "aTest($arg1: String!) { test(who: $arg1) }"
}
有人能解释一下为什么“查询”在第一个例子中出现两次吗?GraphQL服务器从中解释了什么

第二个例子是标准化格式吗


Ref:

查询在GraphQL中可以有两种含义——它可以指向服务器发出的请求,也可以指在该请求中使用的操作类型。GraphQL中使用了三种类型的操作——查询、变异和订阅

在第一个示例中,第一个
查询
标识了随请求一起发送的查询文档。第二个
查询
标识操作类型

换句话说,您可以查询服务器,但您的查询可能包含也可能不包含查询(例如,它可能是一个变种)

在编写查询时,如果省略了操作类型,GraphQL会简单地假设您需要的是一个查询,而不是其他操作,并随之滚动。同样,也可以省略操作名(
aTest

顺便说一句,省略操作名称没有任何好处——您应该始终包含它,以防止任何歧义和潜在问题