GraphQL 简介

2025-05-27

GraphQL 简介

什么是 GraphQL?

GraphQL是一种 API 查询语言。它能够满足客户端在运行时的需求,并赋予客户端决定 API 数据格式和数据集的权力。

GraphQL 背后的历史

令人惊叹的 GraphQL 由Facebook于 2012 年发明。当时 Facebook 内部使用它。后来,在 2015 年,Facebook 决定将其开源。现在它由 GraphQL 社区维护。

道具

* 单端点 API 服务

GraphQL 能够在单个端点中提供海量数据。例如,您需要获取系统所有用户和所有产品的列表。在 REST 中,您至少需要两个端点才能实现此目的。但在 GraphQL 中,只需一个 API 即可。
一个基本的 GraphQL 查询示例:

query getCustomData {
  getUsers {
    name
    username
  }
  getProducts {
    name
  }
}
Enter fullscreen mode Exit fullscreen mode

* 控制数据获取

从上一个例子中,你已经了解了数据查询。在 GraphQL 中,我们可以让服务器知道我真正需要什么。
让我们修改一下查询

query getCustomData {
  getUsers {
    name
    username
    email
    ... anything you have
  }
}
Enter fullscreen mode Exit fullscreen mode

* 现代设计

GraphQL 的 API 设计非常现代化。它有助于简化不同客户端软件的开发和维护。例如,对于产品名称为“x”的产品,您显然有一个桌面客户端、一个移动客户端和一个 Web 客户端。移动应用不需要 Web 客户端和桌面客户端所需的所有数据。在这种情况下,您要么需要为每个客户端公开不同的 API,要么需要序列化所有字段。这样一来,其中一个客户端就会获取额外/不必要的数据。现在想象一下非常慢的网络。我希望您能理解加载缓慢的痛苦。因此,主要且明智的解决方案是编写 GraphQL API。

缺点

* 没有内置缓存支持

幸亏,GraphQL 不支持缓存。由于 REST API 有多个端点,传统的 HTTP 调用缓存效果很好。与 REST 不同,GraphQL 只有一个端点来获取数据。数据依赖于查询。因此,无法通过 HTTP 请求进行缓存。

* 没有特定的错误代码

这不是什么大问题。我们可以利用后门来解决这个问题。与 REST 不同,它没有不同的错误代码。它总是返回 200。识别错误的方法在于errors响应数据中的关键。

结论:我个人认为 GraphQL 很棒、很智能、很现代。但除非你需要,否则不要使用它。

文章来源:https://dev.to/ashraful/introduction-to-graphql-3pc0
PREV
如何使用 Mux、Go、PostgreSQL 和 GORM 构建 API
NEXT
部署网站前需要检查的 14 件事👨‍💻🔥