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
}
}
* 控制数据获取
从上一个例子中,你已经了解了数据查询。在 GraphQL 中,我们可以让服务器知道我真正需要什么。
让我们修改一下查询
query getCustomData {
getUsers {
name
username
email
... anything you have
}
}
* 现代设计
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