发布于 2026-01-06 2 阅读
0

GraphQL:新的 REST?

GraphQL:新的 REST?

GraphQL 由 Facebook 于 2012 年创建,旨在简化开发者从 Facebook API 获取所需数据的过程。GraphQL 提供 API 中数据的完整且易于理解的描述,使客户端能够精确地请求所需数据,不多不少,从而简化 API 的后续演进,并支持强大的开发者工具。

GraphQL 究竟是什么?

GraphQL 是一种用于 API 的查询语言,也是一个运行时环境,用于使用现有数据来执行这些查询。GraphQL 提供 API 中数据的完整且易于理解的描述,使客户端能够精确地请求所需数据,不多不少,从而简化了 API 的后续演进,并支持强大的开发者工具。

GraphQL 与 REST 有什么区别?

图片来源:nordicapis.com

  1. GraphQL 是一种 API 查询语言,而不仅仅是一种数据格式。这意味着您可以精确查询所需内容,并获得清晰易用的数据。
  2. 类型安全。这意味着您可以确保从 API 返回的数据是您期望的数据,并且是有效的。
  3. 它具有自文档性。当您查询 GraphQL API 时,您还会获得有关可用字段和类型的文档。
  4. 它由单个端点支持。这意味着您无需担心为不同数据类型或 API 版本维护多个端点。
  5. 它具有可扩展性。您可以向 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 的新文章。
下周见 :)

文章来源:https://dev.to/nathan20/graphql-the-new-rest-3fbb