GraphQL 的福音:从解耦视图与 REST 的瓶颈中解脱

阅读时长 4 分钟读完

前言

随着互联网技术的发展,前端应用的需求越来越复杂。以往的 REST API 面临的问题是:一次 API 调用返回的数据过于庞大,而前端应用只需要其中一部分,这将导致带宽浪费和响应时间变长。同时,改变一个页面中的某一项数据可能需要多次请求不同的 API,这意味着前端工作要花费更多的时间和精力来编写和维护代码,并且还会面临并行请求的问题。

GraphQL 的出现使前端请求数据变得更加方便和高效。

GraphQL 简介

GraphQL 是什么?

GraphQL 是一种查询语言,作为一个新兴的 API 标准,它可以让前端开发者得到想要的数据,而不需要从多个 API 中获取数据。它提供了一种更加高效、强大和灵活的 API 设计方式,它与前端界面紧密结合,使得前端应用对 API 的使用变得更加简单。

GraphQL 特点

  • 局部查询:在 REST API 中,客户端通常只能通过指定 URL 获取整个资源。GraphQL 查询支持客户端指定需要的数据,使其专注于应用程序的具体需求。

  • 灵活性:GraphQL 有一个强大的类型系统,允许开发者定义复杂的类型和查询语言。

  • 合并数据:GraphQL 允许将多个数据源的查询进行合并,从而可以使查询更加简洁和高效。

  • 增量式开发:GraphQL 中的模式可以随着项目规模的扩大而演化。

GraphQL 基本概念

Schema

在 GraphQL 中,Schema 指的是数据模型,它定义了数据类型、字段、查询和突变。这个模式是为你的应用程序提供服务的 API 的基础。

Query

查询语句是一个从 GraphQL 服务器获取信息的请求,客户端可以使用查询语句来请求特定的数据。

Mutation

变更语句是一条向 GraphQL 服务器发送修改的指令,可用于创建、修改、删除数据。

Resolver

解析器将 Query 和 Mutation 转换为实际的操作,并返回客户端所请求的数据。

GraphQL 与 REST 的比较

数据获取

在 REST API 中,客户端通常只能通过指定 URL 获取整个资源。而在 GraphQL 中,客户端可以定义其需要获取的数据,服务端将其转换为相应的数据结构并返回。

单个请求

在 REST API 中,客户端可能需要多次请求才能获取完整的数据。而在 GraphQL 中,客户端可以通过一次请求获取所有所需的数据。

数据剪枝

在 REST API 中,服务端返回的数据可能会包括过多不必要的信息。而在 GraphQL 中,客户端可以仅请求其需要的信息,提高效率并减少带宽浪费。

GraphQL 示例代码

以下是一个简单的 GraphQL 示例,其中包含一个数据类型(Author),查询一个作者的所有书籍的方法(getBooksByAuthor),以及查询所有作者的方法(getAllAuthors):

-- -------------------- ---- -------
---- ------ -
  --- --
  ----- ------
-

---- ---- -
  --- --
  ------ ------
  ------- ------
-

---- ----- -
  -------------------------- ---- ------
  -------------- --------
-

- ----
--- ------- - -
  - --- ---- ----- ------ --
  - --- ---- ----- ------ -
--

--- ----- - -
  - --- ---- ------ ----- --- --------- --- --
  - --- ---- ------ ----- --- --------- --- --
  - --- ---- ------ ----- --- --------- --- --
  - --- ---- ------ ----- --- --------- --- -
--

--- ---------------- - ------------------ -
  ------ --------------------------- -
    ------ ------------- --- ---------
  ---
-

--- ------------- - ---------- -
  ------ --------
-

- ----
- -- -- - - --------
-
  -------------------------- ---- -
    -----
  -
-

- ------
-
  ------------- -
    ----
  -
-

总结

GraphQL 的出现使前端获取数据变得更加方便和高效。通过在服务端定义 Schema,前端可以精确地指定所需数据,从而提高应用程序性能。GraphQL 的灵活性使其越来越受欢迎,并且其将会成为未来 Web 应用程序的主要 API 设计方式。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64b0b63748841e9894ccdca8

纠错
反馈