手把手教你使用 GraphQL 减少 API 请求

阅读时长 5 分钟读完

介绍

GraphQL 是一种数据查询和操作语言,由 Facebook 在 2015 年开源发布。它提供了一种更高效、更强大的方式来获取和更新服务器端的数据,尤其适用于现代 Web 应用程序的开发。

与传统的 RESTful API 相比,GraphQL 具有以下优点:

  • 你可以通过单个 API 路由来访问多个资源。
  • 客户端可以决定需要哪些数据,避免了不必要的数据传输。
  • 它提供了强大的类型系统,可以大大提高数据查询的可靠性和可维护性。
  • 它可以在服务器端聚合数据并对其进行转换,从而减少对客户端的传输流量和处理时间。

在本文中,我们将介绍如何使用 GraphQL 来减少 API 请求,从而提高前端性能和用户体验。

如何使用 GraphQL

让我们看一个例子,假设我们正在构建一个电子商务网站。我们需要获取商品列表和购物车列表,以便在网站的主页上显示。

使用传统的 RESTful API,我们需要向两个不同的路由发送请求,并拼接返回的数据。但是,使用 GraphQL,我们只需要向单个 API 路由发送请求即可:

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

这将返回一个包含产品和购物车列表的 JSON 对象。客户端应用程序可以直接使用此对象,而无需进行多个请求和数据处理。

GraphQL 与前端框架集成

现在,让我们看看如何将 GraphQL 集成到前端框架中。我们将以 React 为例,演示如何从服务器获取 GraphQL 数据,并在 UI 上渲染它。

安装依赖

首先,我们需要在项目中安装必要的依赖库:

其中,

  • graphql 是 GraphQL 查询语言和运行时库
  • apollo-boost 是一个用于构建 GraphQL 客户端的类库
  • react-apollo 是一个 React HOC(comopnent) ,使得React组件能够直接从服务器请求数据。

定义查询

在项目的根目录中,我们需要创建一个文件夹 queries ,其中存放我们需要发送到服务器的 GraphQL 查询。例如,我们可以创建一个名为 products.js 的文件,其内容如下:

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

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

此查询将请求产品列表并返回每个产品的 idnameprice

定义组件

现在,我们可以在 React 组件中使用该查询。假设我们正在构建一个 ProductsList 组件,该组件将渲染产品列表。它应该如下所示:

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

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

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

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

此组件使用 useQuery hook 来从服务器请求数据,并渲染产品列表。如果数据正在加载,则渲染一个 "Loading..." 消息;如果发生错误,则渲染一个 "Error :(" 消息。否则,它将渲染产品列表的每个项,包括名称和价格。

显示数据

最后,我们需要在应用程序中显示此组件。假设我们正在使用 App 组件来构建我们的应用程序,它应该如下所示:

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

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

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

此组件使用 ApolloProvider 组件来包装 ProductsList 组件,并将 Apollo 客户端传递给它。这允许 ProductsList 组件发送 GraphQL 请求并渲染其响应。

结论

使用 GraphQL 可以大大减少 API 请求数量,并为客户端应用程序提供更好的性能和用户体验。在本教程中,我们介绍了如何使用 Apollo Client 将 GraphQL 集成到 React 应用程序中。希望本文对您有所帮助并能带来有价值的参考。

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

纠错
反馈