GraphQL 的服务端和客户端如何一起工作

阅读时长 5 分钟读完

GraphQL 简介

GraphQL 是一种用于 API 的查询语言,是一种用于服务端与客户端之间进行数据交互的技术,它可以让客户端告诉服务端需要的数据,从而避免了无用的数据交互。GraphQL 是 Facebook 在 2012 年发布的一项技术,并在 2015 年正式开源,目前已经成为了前端开发中很重要的一部分。

服务端的实现

GraphQL 服务端的实现依赖于各种框架,如 Node.js 的 Express、Koa、Rocktql 等。在实现 GraphQL 服务端的时候,需要考虑到以下几个问题:数据定义,查询和数据响应。

数据定义

GraphQL 允许开发者通过定义 Schema 来规定数据的交互方式。它可以定义 Query、Mutation 和 Subscription 三种操作类型和相应的返回对象。对于每种操作类型,需要定义对应的参数和返回值,并且可以添加验证器和默认值等信息。

GraphQL 的 Schema 定义基于 GraphQL 语言,它使用类型来描述数据以及数据的交互方式。例如,如果我们想定义一个查询用户列表的 API,我们可以定义如下类型:

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

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

在这个例子中,我们定义了一个 User 类型,它有 id、name 和 age 三个字段,其中,id、name 字段是必需的,而 age 是可选的。Query 类型定义了所有可用的查询操作,这里只定义了一个 users 查询,它会返回一个包含 User 类型数据的数组。

查询

GraphQL 使用 Query 语言发起请求,通过指定 Query 的名称和参数来获取数据。查询的参数为 JSON 格式的键值对,其 Key 为定义的参数,Value 为参数的值。

下面是一个使用 GraphQL 发起查询的例子:

在这个例子中,我们定义了一个名为 getUsers 的 Query 请求,它会获取所有用户的 id、name 和 age 三个字段。

数据响应

GraphQL 的服务端处理查询后,会返回一个 JSON 格式的数据。这个 JSON 数据与查询时请求的字段相对应,可以包含完整的数据,也可以只包含部分数据。如果请求的数据结构不正确,服务端会返回一个错误信息,告诉客户端出现了哪些问题。

下面是一个使用 GraphQL 查询时返回的数据示例:

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

客户端的实现

在客户端中使用 GraphQL 可以通过各种框架和库来实现,如 React、Vue、Angular 等。GraphQL 客户端使用 Query 语言与服务端进行交互,根据服务端定义的 Schema 发起请求,并接收服务端的响应。

使用 Apollo Client 实现客户端

Apollo Client 是用于 React 的 GraphQL 客户端库,它可以与 GraphQL 服务端进行交互,发送请求并接收响应。使用 Apollo Client 实现 GraphQL 客户端的步骤如下:

  1. 安装依赖包
  1. 创建一个 Apollo Client 实例
  1. 发送请求
-- -------------------- ---- -------
------ - --- - ---- --------------
------ - ----- - ---- ---------------

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

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

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

总结

在本文中,我们介绍了 GraphQL 服务端和客户端如何一起工作。服务端可以通过定义 Schema 来规定数据的交互方式,而客户端可以使用 Apollo Client 实现 GraphQL 客户端,并使用 Query 发起请求,并接收服务端的响应。GraphQL 的服务端和客户端在实际开发中提供了很多便利,值得开发者们深入研究。

参考

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

纠错
反馈