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

GraphQL简介

GraphQL简介

如果只需要从 API 端点获取少量数据,那操作起来就很简单。比如JSONPlaceholder,这是一个可以获取模拟数据的 API。从它的/users端点,你可以简单地获取用户的姓名和邮箱地址。但是,如果遇到更复杂的 API,需要获取的数据不止几个呢?那就意味着更多的数据、更多的端点,以及需要发出更多的请求!

举个例子,假设我们要从一个包含书籍信息的 API 获取数据。如果你在 `<book_name>` 端点传入书名example.com/api/book/:title,你会收到关于这本书的数据,例如标题bookId、页码authorIdgenre页数和页数限制blurb
如果你想获取作者信息,则需要发出另一个请求,在 `<author_id>` 端点传入作者 ID example.com/api/author/:id。虽然这样可以得到所需的信息,但这需要两次请求,既繁琐又难以理解。而 GraphQL 的优势就在于此!


什么是GraphQL?

GraphQL 是 Facebook 开发的一种 API 查询语言,它允许开发者创建更易于理解的 API,并更轻松地从中获取数据。它也是一个用于执行查询的服务器端运行时环境。对于那些想要描述应该返回的数据类型的用户,GraphQL 也使用类型定义来实现!
以图书 API 为例,代码如下所示:

{
  book(bookTitle: "Hello World!") {
    author(id: 50273) {
      name
      age
    }
    id
    genre
    blurb
  }
}

使用 GraphQL 有哪些好处?

你注意到上面的代码片段中,我们传入了作者的 ID 吗?这是因为使用 GraphQL,我们可以在一次查询中获取所需的所有数据!有了从书中获取的作者 ID,我们就可以将其作为查询参数,并获取相应的数据。如果该作者还有其他 ID,我们也可以获取这些 ID 中的数据!GraphQL 的优势在于可以轻松地一次性发送所有查询,这使得代码更易于阅读和理解。

您还可以选择性地获取返回的数据!如果您不需要某个blurb属性或ageAPI 返回的属性,我们可以直接省略它。新的查询语句大致如下:

{
  book(bookTitle: "Hello World!") {
    author(id: 50273) {
      name
    }
    id
    genre
  }
}

这样一来,开发人员可以更灵活地提出需求,同时也能为他们真正需要的数据节省空间。

如果您使用 GraphQL 管理自己的数据库,它可以减少您对端点的关注。通常情况下,您会处理各种不同的请求,例如 GET、POST、PUT 和 DELETE。这些请求通常意味着需要发送多个请求来执行不同的操作,但使用 GraphQL,您的查询只需发送到一个端点。该端点包含辅助函数,可以处理您查询数据所需的任何操作。
规划数据库端点可能非常繁琐,尤其是在应用程序规模庞大的情况下。使用 GraphQL 可以大大简化获取所需数据的过程,而无需担心路径冲突或端点过长的问题。


GraphQL 是一款强大的工具,能够让数据请求变得更加轻松、更加易于理解。它支持多种编程语言,这意味着您可以将其应用于各种技术栈的项目!更好地掌控您的数据请求,快来体验 GraphQL 吧!

文章来源:https://dev.to/seal125/graphql-intro-1mke