你能解释一下 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 请求中的术语吗的主要内容,如果未能解决你的问题,请参考以下文章

GraphQL风格的接口发送GETPOST请求

GET 请求可以加书签,而 POST 不能。有人可以解释一下吗?

你能解释一下 Python 中的装饰器是啥吗? [关闭]

如何在graphql中返回post请求的响应

你能解释一下这个反应原生代码(渲染方法中的奇怪箭头函数)吗?

为啥即使我们尝试获取数据而不是更新/提交新数据,GraphQL 也会查询 POST 请求?