你能解释一下 GraphQL POST 请求中的术语吗
Posted
技术标签:
【中文标题】你能解释一下 GraphQL POST 请求中的术语吗【英文标题】:Can you explain the terminology in a GraphQL POST request 【发布时间】:2018-03-04 02:48:32 【问题描述】:在 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】:Query 在 GraphQL 中可以有两种含义——它可以指向服务器发出的请求,或者指在该请求中使用的操作类型。 GraphQL 中使用了三种类型的操作——查询、变异和订阅。
在您的第一个示例中,第一个 query
标识与您的请求一起发送的查询文档。第二个query
标识操作类型。
换句话说,您可以查询一个服务器,但您的查询可能包含也可能不包含查询(例如,它可能是一个 Mutation)。
在编写查询时,如果您省略操作类型,GraphQL 会简单地假设您想要一个查询,而不是其他操作并随它滚动。以类似的方式,也可以省略操作名称 (aTest
)。
AFAIK,省略操作名称没有任何好处 - 您应该始终包含它以防止任何歧义和潜在的问题。
【讨论】:
以上是关于你能解释一下 GraphQL POST 请求中的术语吗的主要内容,如果未能解决你的问题,请参考以下文章
GET 请求可以加书签,而 POST 不能。有人可以解释一下吗?