GraphQL是无状态的吗?

时间:2016-11-18 03:49:13

标签: rest graphql

出于好奇,我开始阅读有关GraphQL的内容。根据{{​​3}}上的示例,它看起来像REST API请求。它是无国籍的吗?意味着它没有请求,没有来自服务器的响应?如果是,那么为什么它比REST API更轻松?

2 个答案:

答案 0 :(得分:3)

  

是无国籍的吗?

是的,只要服务器不需要任何客户端状态知识来正确解释请求;所有必要的信息都包含在请求本身(标题和正文)中。

  

看起来像是对我的REST API请求。

它可能没有。它完全没有超媒体约束(规范缺乏对链接的任何引用,这是一个很大的提示)。它有点混淆资源"。

来自graphql.org

  

HTTP通常与REST相关联,后者使用"资源"作为其核心理念。相比之下,GraphQL的概念模型是实体图。因此,GraphQL中的实体不会被URL标识。

因此,您获得了许多不同的URI,这些URI指向实体图的不同子集的表示,以及用于图的所有修改的单个URI。在统一界面的背后,这些资源"将全部使用单一路线实施。

REST is an architectural style,"选择他们在候选架构上引发的属性。"看起来GraphQL对一组不同的属性感兴趣;也就是说他们正试图解决一个不同类型的问题。

答案 1 :(得分:2)

GraphQL通常被称为比REST更有效,因为它允许客户端在一个请求中请求多个资源,这样可以节省往返次数,并且还允许客户端仅过滤到他们实际需要的字段。因此,在一天结束时,请求的方式似乎相似,但更强大的查询语言允许客户端获得他们所需的数据,而不是更多。

是的,就像REST一样,它是无状态的。事实上,有些人可能会说GraphQL符合REST描述的许多原始要求。