GraphQL:新的 REST?
GraphQL 由 Facebook 于 2012 年创建,旨在简化开发者从 Facebook API 获取所需数据的过程。GraphQL 提供 API 中数据的完整且易于理解的描述,使客户端能够精确地请求所需数据,不多不少,从而简化 API 的后续演进,并支持强大的开发者工具。
GraphQL 究竟是什么?
GraphQL 是一种用于 API 的查询语言,也是一个运行时环境,用于使用现有数据来执行这些查询。GraphQL 提供 API 中数据的完整且易于理解的描述,使客户端能够精确地请求所需数据,不多不少,从而简化了 API 的后续演进,并支持强大的开发者工具。
GraphQL 与 REST 有什么区别?
- GraphQL 是一种 API 查询语言,而不仅仅是一种数据格式。这意味着您可以精确查询所需内容,并获得清晰易用的数据。
- 类型安全。这意味着您可以确保从 API 返回的数据是您期望的数据,并且是有效的。
- 它具有自文档性。当您查询 GraphQL API 时,您还会获得有关可用字段和类型的文档。
- 它由单个端点支持。这意味着您无需担心为不同数据类型或 API 版本维护多个端点。
- 它具有可扩展性。您可以向 GraphQL schema 添加自己的类型和字段,并像查询任何其他数据一样查询它们。
换句话说,传统的 REST 模型就像从多家披萨店订披萨,每家店都有自己的电话号码。这既耗时又令人沮丧,尤其是在你中途改变主意的时候。而使用 GraphQL,就好比只从一家店订披萨。你告诉他们你想要的配料,他们就会为你做好。如果你改变主意,只需重新选择配料即可,无需从头开始。
三个词概括基本概念
- 它允许客户精确指定所需的数据。
- 它使汇总来自多个来源的数据变得更加容易。
- 它使用类型系统来描述数据。
更多技术术语……
三个主要组成部分:
模式、查询和解析器。
查询...
查询是客户端发出的请求。查询字段可以指向数组并支持参数。QraphQL
中的典型查询如下所示。
query{
object {
table
}
}
解析器
解析器负责获取特定字段的数据。如果没有解析器,GraphQL 服务器将无法处理与该字段对应的数据。通过解耦 API 模式和数据库模式,GraphQL 允许您使用前者来修改后者的内容。
Query: { post(root, args) { return Posts.find({ id: args.id }); }}
解析器也可以用于修改数据,在这种情况下,它们被称为变异解析器。mutation {
createUser (userName:"user1") {
userName
}
}
模式
schema 是 GraphQL API 的蓝图。它定义了可以从 API 获取的数据类型,以及如何修改这些数据。
GraphQL 虽然不如 REST 流行,但它非常高效,而且越来越受欢迎。GraphQL 是现代开发的理想选择,值得学习。
下周我将发布一篇关于 API 安全和 GraphQL 的新文章。
下周见 :)
