如何在 Fastify 中测试 GraphQL

阅读时长 4 分钟读完

GraphQL 是一种用于API的查询语言,它可以让前端工程师轻松地向后端发起请求,并且只返回需要的数据,减少了不必要的网络请求开销,提高了应用程序的性能。在 Fastify 中测试 GraphQL API 是前端开发工作中一个非常重要的环节,本文将会介绍如何在 Fastify 中测试 GraphQL,详细讲解测试的方法以及预期的输出结果。

准备工作

在开始测试 GraphQL API 之前,我们需要先安装一些依赖。因为我们使用 Fastify 和 GraphQL,所以我们需要安装这两个模块。

创建 GraphQL schema

在开始测试 GraphQL API 之前,我们需要先创建一个 GraphQL schema。GraphQL schema 定义了一个 GraphQL API 的类型系统,我们需要定义 API 的所有数据类型以及数据交互方式。

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

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

创建 Fastify API

我们需要通过 Fastify 创建一个 API,使我们可以向 GraphQL 发送请求并获得响应。我们可以将 Fastify 和 GraphQL 集成在一起,通过 Fastify 发送请求到 GraphQL API 并获得响应。

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

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

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

测试 GraphQL API

现在我们已经创建了 GraphQL schema 并集成了 Fastify,我们现在可以使用测试工具轻松地测试 GraphQL API 了。在本例中,我们将所选的测试工具为 graphql-request,但你可以选择你喜欢的任何 GraphQL 工具进行测试。

首先,我们需要安装 graphql-request

现在,我们可以使用 graphql-request 发送请求到 Fastify API 并获得响应。例如,以下是获取 ID 为 “1” 的用户的查询:

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

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

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

输出结果应该类似于以下结果:

总结

至此,我们已经学习了如何在 Fastify 中测试 GraphQL。通过本文,你知道了如何创建 GraphQL schema,集成 Fastify 和创建 GraphQL API,并使用 graphql-request 进行测试。希望这篇文章对你有所帮助。

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

纠错
反馈