为什么你应该使用 GraphQL 而不是 RESTful

RESTful 是目前网络应用主流的 API 架构模式之一,但是 GraphQL 也已经获得了更多的关注和广泛应用,它被视为未来 Web 开发的趋势和方向。本文将介绍 GraphQL 的优势和特点,以及如何在前端中使用 GraphQL。

什么是 GraphQL?

GraphQL 是一种用于构建 API 的查询语言,它由 Facebook 在 2012 年推出,并于 2015 年正式开源。GraphQL 的主要特点是借鉴了图论的概念,客户端可以自由定义需要获取的数据的结构和格式,而后台仅仅提供一个数据操作入口,类似于中间层。GraphQL 内部维护了一个数据图,当客户端请求某个节点的数据时,会根据数据图自动查询相关联的数据。

具体来说,GraphQL 可以做到以下几点:

  • 定义精细的数据结构:GraphQL 允许客户端精细定义需要获取的特定数据结构,避免了 RESTful 的过度接口设计和网络负载。
  • 减少网络请求次数:客户端只需要发起一次 GraphQL 查询请求,就可以从后端获取所需的全部数据,避免了 RESTful 多次请求,节省了网络带宽和开销。
  • 优化前端渲染:GraphQL 可以让客户端获取到组件中所需的全部 props ,包括 nested props,而不用显式地标记资源间的关系。
  • 提供灵活的数据查询:GraphQL 允许一次查询操作获取多组数据,甚至可以进行数据的组合查询和聚合查询,而 RESTful 则需要额外复杂的操作来实现。

GraphQL 的优势

更好的客户端体验

前端渲染是现代 Web 应用中消费资源最多的操作之一,而 GraphQL 可以通过 API 减轻这个负担。GraphQL 提供的精细的数据查询和指定功能,让前端更少地发送网络请求,还可以选择性地获取每个组件和页面特定的数据,从而提高前端渲染的速度和质量,同时也降低了代码耦合和后期维护成本。

更加灵活的数据获取方式

RESTful 的数据获取模式是根据 API 接口返回的标准来处理数据,对于多个资源或多个组合数据的请求,客户端需要请求多次后端接口,并处理前后端交互逻辑。而 GraphQL 可以方便的在同一个查询请求中完成这些操作,满足用户个性化的数据查询需求。在理性使用的情况下,GraphQL 的存储后端服务器压力相对于 RESTful 会更小,可以更好的为服务器负载均衡提供可能。

快速迭代

GraphQL 的查询语言和 GraphQL 内部的数据结构可以方便地适应更改。后端开发人员可以根据前端的需求随时更改和扩展 Schema 和查询语言,同时它们也可以更加容易进行版本迭代或者多个版本之间的兼容。这使得 API 的升级变得非常方便,而 RESTful 的架构只能在多个 API 接口之间进行变更。

在前端中使用 GraphQL

目前,GraphQL 使用的平台比较多,包括 React, Vue, Angular 等,并且大多数现代化前端框架都可以方便地集成 GraphQL 进行开发。

集成 GraphQL 到 React 项目中

首先,需要使用 GraphQL 客户端库 Apollo Client:

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

接下来,需要创建 ApolloClient :

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

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

然后,将创建的 ApolloClient 注入到 React 组件中:

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

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

最后,可以在 MyApp 组件中使用 GraphQL Query 来获取数据:

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

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

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

以上是使用 Apollo Client 和 React 集成 GraphQL 的简单示例。通过使用 Apollo Client,我们可以很容易地在前端中使用 GraphQL 进行数据查询。

结论

GraphQL 是一种较新的网络 API 架构,但是它已经被广泛地应用于现代 Web 应用中。使用 GraphQL 的优点在于更好的客户端体验和更加灵活和高效的数据获取方式,特别是在前端渲染和快速迭代方面。在前端中使用 GraphQL 很容易,只需要集成 GraphQL 客户端库即可。现在,更多的 Web 应用正在使用 GraphQL 替代传统的 RESTful API,未来也将成为 Web 开发的重要趋势。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6738b3bd317fbffedf1231d0