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

Posted

技术标签:

【中文标题】为啥即使我们尝试获取数据而不是更新/提交新数据,GraphQL 也会查询 POST 请求?【英文标题】:Why are GraphQL queries POST requests even when we are trying to fetch data and not update/submit new data?为什么即使我们尝试获取数据而不是更新/提交新数据,GraphQL 也会查询 POST 请求? 【发布时间】:2020-03-28 10:39:19 【问题描述】:

我正在使用 Postman 从我的服务器获取数据,当我使用 REST 调用时,它是一个 GET 请求,但是当我使用 GraphQL API 调用时,它需要是一个 POST 请求。为什么会这样?

【问题讨论】:

你也可以使用像http://myapi/graphql?query=mename这样的GET请求(来源:graphql.org/learn/serving-over-http/#get-request)我认为这取决于你的API配置。 知道了,谢谢@Mate! 【参考方案1】:

GraphQL 规范本身与传输无关,但是社区采用的惯例是使用 POST 请求。正如 cmets 中所指出的,一些库支持 GET 请求。但是,这样做时,查询 必须作为 URL 查询参数发送,因为 GET 请求不能有正文。这对于较大的查询可能会出现问题,因为您可以轻松地在某些服务器上达到414 URI Too Long 状态。

最佳做法是始终使用带有application/json Content-Type 的 POST 请求。

【讨论】:

这完全有道理,感谢@Daniel 给予更多的关注!

以上是关于为啥即使我们尝试获取数据而不是更新/提交新数据,GraphQL 也会查询 POST 请求?的主要内容,如果未能解决你的问题,请参考以下文章

为啥是 PRG 模式而不是其他模式?

joomla 组件保存创建一个新实例而不是更新

为啥创建评论部分时我的状态没有按预期更新?

为啥插入动作出现而不是 iBoutlet?

应该插入还是更新新数据?当我尝试在表行中插入空值时,为啥会死锁?

为啥只获取本地数据而不是集群的所有数据?