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

时间:2017-09-22 13:36:19

标签: graphql graphql-js apollo

在Apollo Developers文档中,有一个关于GraphQL中有效的帖子请求主体的示例

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

从我在Apollo Server中看到的这个查询也适用于:

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

有人可以解释为什么“查询”在第一个例子中出现两次? GraphQL服务器从中解释了什么?

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

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

1 个答案:

答案 0 :(得分:1)

查询在GraphQL中可以有两个含义 - 它可以引用对服务器的请求,也可以引用该请求中使用的操作类型。 GraphQL中使用了三种类型的操作 - 查询,变异和订阅。

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

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

在编写查询时,如果省略操作类型,GraphQL只会假设您需要查询,而不是其他一些操作并使用它进行滚动。以类似的方式,也可以省略操作名称aTest)。

AFAIK,省略操作名称没有任何好处 - 您应该始终包含它以防止出现任何歧义和潜在问题。