Fastify 中集成 GraphQL 实现 API 接口

阅读时长 8 分钟读完

GraphQL 是一种查询语言,用于从服务端获取数据。它相对于传统 REST API 更加灵活和高效,具有更好的数据组织和查询能力。Fastify 是一个快速、高效、低开销的 Web 框架,适合构建高性能的 API 接口。本文将介绍如何在 Fastify 中集成 GraphQL,实现高效的 API 接口。

安装 Fastify 和 GraphQL

在开始之前,我们需要先安装 Fastify 和 GraphQL。可以使用 npm 或 yarn 进行安装:

或者

初始化 Fastify 应用

首先,我们需要初始化一个 Fastify 应用。创建一个名为 app.js 的文件,并添加以下内容:

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

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

-------------------- ----- -- -
  -- ----- -
    ------------------
    ---------------
  -
  ------------------- ------- -- ------------------------
--
展开代码

这段代码创建了一个 Fastify 应用,并监听在 http://localhost:3000/ 上。当访问该地址时,将返回一个 JSON 对象 { hello: 'world' }

集成 GraphQL

接下来,我们需要使用 Fastify 插件 fastify-gql 将 GraphQL 集成到应用中。打开 app.js 文件,添加以下代码:

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

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

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

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

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

-------------------- ----- -- -
  -- ----- -
    ------------------
    ---------------
  -
  ------------------- ------- -- ------------------------
--
展开代码

这段代码:

  1. 使用 makeExecutableSchema 函数定义了一个 GraphQL Schema。
  2. 使用 Fastify 插件 fastify-gql,将该 Schema 集成到 Fastify 应用中。
  3. 启用了 GraphiQL 工具,使得可以在浏览器中直接测试 GraphQL 查询。

现在,打开浏览器,访问 http://localhost:3000/graphql,就可以看到 GraphiQL 工具了。在左侧的编辑器中,输入以下查询语句:

然后点击右侧的 Play 按钮,可以看到返回的结果是:

这说明我们已经成功地在 Fastify 中集成了 GraphQL。

添加更多的查询

现在,我们只定义了一个简单的查询 hello。但是,GraphQL 的查询能力远不止于此。下面,我们将添加更多的查询,以便深入了解 GraphQL。

参数查询

添加一个查询 user,可以根据传入的 ID 返回一个用户对象。在 Schema 中添加以下内容:

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

---- ----- -
  ------ -------
  -------- ----- ----
-
展开代码

在 Resolver 中添加以下内容:

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

----- --------- - -
  ------ -
    ------ -- -- --------
    ----- --- - -- -- -- --------------- -- ------- --- ---
  -
-
展开代码

现在,在 GraphiQL 工具中可以发送如下查询:

返回的结果是:

列表查询

添加一个查询 users,可以返回所有用户的列表。在 Schema 中添加以下内容:

在 Resolver 中添加以下内容:

现在,在 GraphiQL 工具中可以发送如下查询:

返回的结果是:

-- -------------------- ---- -------
-
  ------- -
    -------- -
      -
        ------- --------
        -------- -------------------
      --
      -
        ------- ------
        -------- -----------------
      -
    -
  -
-
展开代码

变量查询

到目前为止,我们只使用了硬编码的参数。GraphQL 还提供了变量查询,可以使用变量传递参数。在 GraphiQL 工具中使用变量很方便。在编辑器左下角有一个变量区域,可以定义变量类型和默认值。然后在查询语句中使用 $ 符号引用变量。在实际应用中,我们可以使用各种语言的 GraphQL 客户端库来发送变量查询。在 Schema 中添加以下内容:

在 Resolver 中添加以下内容:

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

----- --------- - -
  ------ -
    ------ -- -- --------
    ----- --- - -- -- -- --------------- -- ------- --- ----
    ------ -- -- ------
    ---------- --- - ---- -- -- ---------------
  -
-
展开代码

现在,在 GraphiQL 工具中可以发送如下查询:

在变量区域输入以下变量:

返回的结果是:

-- -------------------- ---- -------
-
  ------- -
    ------------ -
      -
        ------- ------
        -------- -----------------
      -
    -
  -
-
展开代码

小结

在这篇文章中,我们介绍了如何在 Fastify 中集成 GraphQL,实现高效的 API 接口。我们从简单的查询开始,逐渐深入了解了 GraphQL 的各种查询功能。希望这篇文章能够帮助你更好地理解 GraphQL 和 Fastify,以及如何使用它们来构建高效的 API 接口。

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

纠错
反馈

纠错反馈