如何使用 Fastify 框架构建 GraphQL API

Fastify 是一个快速的 web 服务器框架,让构建高效的应用程序非常方便。GraphQL 是一种强大的查询语言,允许客户端指定需要获取的数据,而服务端只返回客户端请求的数据,减少了传输的数据量。本篇文章将介绍如何使用 Fastify 框架构建 GraphQL API。

安装依赖

首先,我们需要安装一些依赖项。

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

这些依赖包括:

  • fastify:Fastify 框架
  • fastify-cors:Fastify 插件,添加 CORS 头
  • fastify-static:Fastify 插件,提供静态文件服务
  • fastify-compress:Fastify 插件,压缩响应数据
  • graphql:GraphQL 库
  • fastify-gql:Fastify 插件,提供 GraphQL API

创建 Fastify 实例

接下来,我们需要创建一个 Fastify 实例。我们将按照如下的规范创建一个实例:

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

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

在这里,我们向 Fastify 实例注册了三个插件:fastify-cors、fastify-static 和 fastify-compress。我们也使用了一个 logger,这将为我们提供一些运行时日志。 注意,我们为 fastify-static 定义了一个目录“public”,并将其公开为“/public”路由。

定义 GraphQL 服务

现在,我们可以添加我们的 GraphQL 服务。 首先,我们需要在应用程序中引入 GraphQL 库并定义一个简单的 Schema:

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

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

这个简单的模式定义了一个名为“greeting”的字段,它返回一个字符串。

接下来,我们需要在 Fastify 中定义 GraphQL 路由:

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

我们在这里向 Fastify 实例注册了 fastify-gql 插件,并将 GraphQL 模式传递给它。 我们通过设置 graphiql 参数来启用 GraphiQL 控制台,设置 prefix 参数为“/graphql/”以公开路由。

添加解析函数

现在,在 Schema 中我们已经定义了 greeting 字段,但我们还没有定义如何获取它。 我们需要为 greeting 字段定义一个解析函数:

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

在这里,我们定义了一个名为“greeting”的函数,它将返回字符串“Hello, World!”。

我们现在可以将这个解析函数添加到我们的 GraphQL 服务器中:

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

在这里,我们为 GraphQL 服务提供了一个处理程序,并将其添加到 fastify-gql 插件中。 在 fastify-gql 插件的 handlers 中,我们为 greeting 字段定义了一个解析程序,该程序调用 graphql 函数并将请求发送到根对象。响应将用 reply.send() 发送回客户端。

完整的示例代码

现在,我们已经定义了一个简单的 GraphQL API,以便客户端可以获取 greeting 字段。以下是完整的示例代码:

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

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

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

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

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

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

结论

Fastify 框架提供了一个简单而快速的方式来构建 GraphQL API,并且它使用了 GraphQL 库提供的批处理查询和有效内存使用等高级功能。 在创建 GraphQL API 时,请记住使用 Fastify,构建更快、更高效的应用程序。

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