如何使用 Express.js 和 GraphQL 创建可扩展的 API

在现代 Web 应用程序中,API 是一个非常重要的组成部分。在构建一个可扩展的 Web 应用程序时,我们需要使用一种灵活的 API 设计,这样我们就可以轻松地添加、更新和删除功能。在这篇文章中,我们将介绍如何使用 Express.js 和 GraphQL 创建可扩展的 API。

什么是 Express.js?

Express.js 是一个流行的 Node.js Web 框架,它提供了一组强大的功能,可以帮助我们轻松地构建 Web 应用程序和 API。Express.js 提供了一个简单的路由系统,可以帮助我们管理 HTTP 请求和响应。它还提供了一些中间件,可以帮助我们处理请求和响应,例如解析 JSON 和处理错误。

什么是 GraphQL?

GraphQL 是一个用于 API 的查询语言,它可以帮助我们构建灵活的 API。GraphQL 可以让客户端指定需要的数据,这样我们就可以减少不必要的数据传输。GraphQL 还提供了一个强大的类型系统,可以帮助我们验证数据的正确性。

如何使用 Express.js 和 GraphQL?

首先,我们需要安装 Express.js 和 GraphQL:

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

然后,我们可以创建一个 Express.js 应用程序:

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

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

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

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

在这个应用程序中,我们使用了 graphqlHTTP 中间件来处理 GraphQL 请求。我们需要提供一个 GraphQL schema,这个 schema 定义了我们的数据类型和查询。我们还设置了 graphiql 选项,这样我们就可以在浏览器中打开 GraphQL UI。

接下来,我们需要定义我们的 GraphQL schema。我们可以使用 GraphQLSchema 类来定义我们的 schema。

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

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

在这个 schema 中,我们定义了一个 Query 类型,它包含了一个 hello 字段,这个字段返回一个字符串。我们还定义了一个 resolve 函数,它返回 "Hello, world!"

现在,我们可以在浏览器中打开 http://localhost:3000/graphql,这样我们就可以使用 GraphQL UI 来测试我们的 API。

我们可以在左侧的窗口中输入以下查询:

-
  -----
-

然后,我们可以点击右侧的“运行”按钮来执行查询。我们应该会在右侧的窗口中看到以下结果:

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

这是我们的 API 返回的数据。

如何扩展 API?

现在,我们已经创建了一个简单的 GraphQL API。但是,我们如何扩展它呢?

首先,我们可以添加更多的字段到我们的 Query 类型中。例如,我们可以添加一个 time 字段,它返回当前时间:

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

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

现在,我们可以在 GraphQL UI 中测试我们的新字段:

-
  ----
-

这个查询应该会返回当前时间的 ISO 字符串。

我们还可以添加更多的类型到我们的 schema 中。例如,我们可以添加一个 User 类型,它包含一个 id 字段和一个 name 字段:

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

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

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

现在,我们可以在 GraphQL UI 中测试我们的 User 类型:

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

这个查询应该会返回一个包含 idname 字段的对象。

总结

在这篇文章中,我们介绍了如何使用 Express.js 和 GraphQL 创建可扩展的 API。我们学习了如何使用 Express.js 和 graphqlHTTP 中间件来处理 GraphQL 请求,以及如何定义我们的 GraphQL schema。我们还学习了如何扩展我们的 API,添加更多的字段和类型。

如果你想了解更多关于 Express.js 和 GraphQL 的内容,可以查看官方文档:

希望这篇文章能够帮助你学习如何创建可扩展的 API!

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