在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
答案 0 :(得分:1)
查询在GraphQL中可以有两个含义 - 它可以引用对服务器的请求,也可以引用该请求中使用的操作类型。 GraphQL中使用了三种类型的操作 - 查询,变异和订阅。
在第一个示例中,第一个query
标识随您的请求发送的查询文档。第二个query
标识操作类型。
换句话说,您可以查询服务器,但您的查询可能包含也可能不包含查询(例如,它可能是一个变种)。
在编写查询时,如果省略操作类型,GraphQL只会假设您需要查询,而不是其他一些操作并使用它进行滚动。以类似的方式,也可以省略操作名称(aTest
)。
AFAIK,省略操作名称没有任何好处 - 您应该始终包含它以防止出现任何歧义和潜在问题。