【发布时间】:2017-04-01 19:56:03
【问题描述】:
出于好奇,我开始阅读 GraphQL。根据this article 上的示例,对我来说它看起来像是 REST API 请求。是无国籍的吗?意味着它没有请求,没有来自服务器的响应?如果是,那为什么它比 REST API 资源更轻?
【问题讨论】:
出于好奇,我开始阅读 GraphQL。根据this article 上的示例,对我来说它看起来像是 REST API 请求。是无国籍的吗?意味着它没有请求,没有来自服务器的响应?如果是,那为什么它比 REST API 资源更轻?
【问题讨论】:
它是无国籍的吗?
是的,只要服务器不需要任何客户端状态知识即可正确解释请求;所有必要的信息都包含在请求本身(标头和正文)中。
对我来说,这看起来像是 REST API 请求。
它可能不会。它在超媒体约束上完全失败(规范缺少对链接的任何引用,这是一个很大的提示)。 “资源”有点混乱。
HTTP 通常与 REST 相关联,REST 使用“资源”作为其核心概念。相比之下,GraphQL 的概念模型是一个实体图。因此,GraphQL 中的实体不是由 URL 标识的。
因此,您会获得许多不同的 URI,它们指向实体图的不同子集的表示,以及用于图的所有修改的单个 URI。在统一接口背后,这些“资源”都将使用单一路由实现。
REST is an architectural style, “选择它们在候选架构上引入的属性。”看起来 GraphQL 对一组不同的属性感兴趣;也就是说,他们正在尝试解决不同类型的问题。
【讨论】:
GraphQL 通常被称为比 REST 更高效,因为它允许客户端在一个请求中请求多个资源,从而节省了往返行程,并且还允许客户端过滤到他们实际需要的字段。因此,最终完成请求的方式似乎相似,但更强大的查询语言允许客户端准确地获取他们需要的数据。
是的,它和 REST 一样是无状态的。事实上,有些人可能会说 GraphQL 满足了 REST 描述的许多原始要求。
【讨论】: