如何使用 Express.js 实现 GraphQL 的 API

GraphQL 是一种用于 API 的查询语言,它提供了一种更高效、更强大、更灵活的方式来获取数据。而 Express.js 是一种流行的 Node.js Web 框架,它可以帮助我们轻松地构建 Web 应用程序。在本文中,我们将讨论如何使用 Express.js 实现 GraphQL 的 API。

安装依赖

首先,我们需要安装必要的依赖。我们将使用以下软件包:

  • express: Express.js Web 框架。
  • express-graphql: 用于在 Express.js 中集成 GraphQL 的中间件。
  • graphql: GraphQL 的 JavaScript 实现。

您可以使用以下命令安装它们:

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

创建一个 Express.js 应用程序

接下来,我们将创建一个 Express.js 应用程序。我们将创建一个名为 app.js 的文件,并编写以下代码:

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

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

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

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

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

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

在这个文件中,我们首先导入了必要的依赖。然后,我们使用 buildSchema 函数创建了一个 GraphQL schema。这个 schema 定义了一个名为 hello 的查询,它返回一个字符串。接下来,我们定义了一个名为 root 的对象,它包含了一个名为 hello 的函数,该函数返回字符串 'Hello world!'

然后,我们创建了一个 Express.js 应用程序,并使用 graphqlHTTP 中间件将 GraphQL 集成到应用程序中。我们将 GraphQL schema 和 root 传递给中间件,并将 graphiql 选项设置为 true,以启用 GraphiQL IDE。

最后,我们将应用程序监听在端口 4000 上,并在控制台输出一个消息,以指示服务器已启动。

运行应用程序

现在,我们已经完成了应用程序的编写。我们可以使用以下命令启动服务器:

---- ------

然后,我们可以在浏览器中访问 http://localhost:4000/graphql,并在 GraphiQL IDE 中测试我们的 API。

在 GraphiQL 中,我们可以输入以下查询:

-
  -----
-

这将返回以下结果:

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

添加更多查询

现在,我们已经成功地创建了一个简单的 GraphQL API。接下来,让我们添加更多查询。

我们将添加一个名为 user 的查询,它将返回一个用户对象,该对象包含 idname 属性。

首先,我们需要更新我们的 schema。我们将更新 type Query,以添加一个 user 查询:

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

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

然后,我们需要将 user 查询添加到我们的 root 对象中:

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

在这个示例中,我们只是返回一个硬编码的用户对象。在实际应用程序中,您需要查询数据库或其他数据源,以获取用户信息。

现在,我们已经更新了 schema 和 root,我们可以重新启动服务器,并在 GraphiQL 中测试我们的新查询。我们可以使用以下查询来测试我们的 user 查询:

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

这将返回以下结果:

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

结论

在本文中,我们介绍了如何使用 Express.js 实现 GraphQL 的 API。我们首先安装了必要的依赖,然后创建了一个 Express.js 应用程序,并使用 graphqlHTTP 中间件将 GraphQL 集成到应用程序中。我们添加了一个简单的 hello 查询,并添加了一个更复杂的 user 查询。

这只是 GraphQL 的一个简单示例。在实际应用程序中,您可能需要更复杂的 schema 和 root,以及更复杂的查询和突变。但是,本文提供了一个良好的起点,可以帮助您开始使用 Express.js 和 GraphQL 构建强大的 API。

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