你能解释的术语在GraphQL POST请求

问题描述:

在阿波罗开发者文档中有GraphQL对POST请求的有效体为例你能解释的术语在GraphQL POST请求

{ 
    "query": "query aTest($arg1: String!) { test(who: $arg1) }" 
} 

从我在阿波罗服务器已经看到了这条查询也可以使用:

{ 
    "query": "aTest($arg1: String!) { test(who: $arg1) }" 
} 

有人能解释为什么“query”在第一个例子中出现两次? GraphQL服务器从这里解释什么?

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

价:http://dev.apollodata.com/tools/graphql-server/requests.html

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

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

换句话说,您可以查询服务器,但您的查询可能包含也可能不包含查询(例如,它可能是一个突变)。当你编写你的查询时,如果你省略了操作的类型,GraphQL只是假定你想要一个查询,而不是其他一些操作,并且随它一起滚动。以类似的方式,也可以省略操作名称aTest)。 AFAIK,省略操作名称没有任何好处 - 您应该始终包含它以防止任何含糊不清和潜在的问题。