在Apollo开发人员文档中,有一个示例,用于graphql
中的邮政请求的有效主体{
"query": "query aTest($arg1: String!) { test(who: $arg1) }"
}
从我在阿波罗服务器中看到的查询也可以使用:
{
"query": "aTest($arg1: String!) { test(who: $arg1) }"
}
有人可以解释为什么在第一个示例中出现"查询"两次?GraphQl Server从中解释了什么?
第二个示例是标准化格式?
参考:http://dev.apollodata.com/tools/graphql-server/requests.html
查询可以在GraphQL中具有两个含义 - 它可以参考对服务器的请求,也可以指该请求中使用的操作类型。GraphQl中使用了三种类型的操作 - 查询,突变和订阅。
在您的第一个示例中,第一个query
标识了随请求发送的查询文档。第二个query
标识了操作类型。
换句话说,您可以查询服务器,但是您的查询可能包含或不包含查询(例如,它可能是突变)。
编写查询时,如果您省略了操作的类型,则GraphQl只是假设您想要查询,而不是其他操作,并且可以使用它。以类似的方式,也可以省略操作名称( aTest
)。
afaik,省略操作名称没有任何好处 - 您应该始终包含它以防止任何歧义和潜在的问题。