这意味着我们必须遵循一些设计 REST API 的约束。
什么是 GraphQL?
与 REST API 不同,GraphQL 出现得更晚。它由 Facebook 于 2012 年内部开发,但于 2015 年公开推出。
GraphQL 是一种用于 API 的查询语言,也是使用您为数据定义的类型系统执行查询的服务器端运行时。 GraphQL 不依赖于任何特定的数据库或存储引擎,并且由您现有的代码和数据支持。 –摘自官方 文档
通俗地说,GraphQL 是一种用于 API 的开源查询语言,它为客户端提供了检索或操作特定数据的能力,而无需对服务器进行多次 API 调用。
GraphQL 旨在帮助开发人员快速灵活地进行 API 调用,且无需太多开销,并且可由任何编程语言使用。它被认为是构建 API 的现代方法之一。
GraphQL 和 REST API 有什么区别?
现在我们已经讨论了 GraphQL 和 REST API 的定义,让我们深入了解它们之间的区别。
检索数据
GraphQL 和 REST API 之间的主要区别之一是它们如何检索数据。
REST API 使检索信息变得有些困难。让我们回到之前的Shopify 商店示例,其中我们需要特定产品列表的产品变体。在 REST API 中,我们将采取以下步骤:
向服务器发出 API 调用并检索所有产品 (/products/)
使用这些产品的 ID,进行 `GET` 调用以获取产品变体 (productVariant/)
继续进行调用,直到我们从产品列表中获取所有产品变体
在这种特殊情况下,我们发出许多请求来检索特定产品列表的产品变体。
这种特定方法存在两
个问题。首先,我们发出了太多 HTTP 黎巴嫩电话号码 请求调用。我们没有收到产品变体,需要进行额外调用才能获取它们,这可以说是获取不足。这也称为 N+1 问题。这是 API 设计和数据库查询中普遍存在的问题,会增加总体处理时间。其次,我们检索了不需 印度尼西亚号码列表 要的信息,这称为过度获取。在我们的例子中,我们只需要产品 ID,但我们检索了整个产品对象。
相比之下,使用 GraphQL,我们可以执行以下操作: