使用 Express.js 和 GraphQL 构建 API

阅读时长 6 分钟读完

前言

Web 开发的核心就是构建 API,API 构建的质量决定了更高层级的应用质量。随着框架和技术的发展,很多新的构建方式和协议已经涌现出来。

在本文中,我们将使用 Express.js 和 GraphQL 构建 API。Express.js 是一个流行的 Node.js Web 框架,而 GraphQL 则是一个用于 API 的查询语言和运行时环境。它们可以帮助我们构建更快、更简单、更可靠的 API。

Express.js

Express.js 是一个基于 Node.js 平台的 Web 框架。它提供了一个简单而灵活的 API,让我们能够快速地构建 Web 应用程序。

以下是一个使用 Express.js 构建简单 API 的示例:

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

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

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

在上面的代码中,我们使用 express 模块创建了一个 Express 应用程序。我们在根路径上定义了一个 GET 路由,当请求根路径时,该路由将发送一个 “Hello World!” 的响应。最后,我们将应用程序的端口设置为 3000 并监听该端口。

使用这种方式,我们可以快速地构建一个功能简单的 API。但是在开发更为复杂的应用程序时,我们需要更多的功能。

Express 提供了更多高级功能,包括:

  • Middleware
  • 路由
  • 静态文件服务
  • 模板引擎

在这篇文章中,我们将重点介绍如何使用 Express 和 GraphQL 构建 API。

GraphQL

GraphQL 是一个用于 API 的查询语言和运行时环境。通过 GraphQL,我们可以使用一种声明性语言来定义查询,与数据源通信,并返回所需的数据。

GraphQL 的一个主要特点是让客户端可以查询精确的数据,并且只返回客户端所需的数据。这可以有效减轻服务器的负担和带宽压力。

以下是一个使用 GraphQL 构建 API 的示例:

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

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

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

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

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

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

在上面的代码中,我们使用 graphqlHTTP 中间件将 GraphQL 与 Express 应用程序集成在一起。我们定义了一个 Query 类型,该类型有一个名为 hello 的字段。我们还提供了一个名为 root 的解析器,用于实现 hello 字段的逻辑。

最后,我们将 GraphQL 中间件添加到 Express 应用程序中,将其路由到 /graphql 路径,并启用 GraphiQL 调试工具。

在 Express 中使用 GraphQL

现在我们已经了解了如何使用 Express 和 GraphQL 分别构建一个简单的 API,接下来我们将介绍如何将它们结合起来使用。

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

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

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

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

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

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

在上面的代码中,我们在定义 Query 类型中添加了一个 greeting 字段,该字段带有一个 name 参数。我们还在 root 解析器中实现了一个 greeting 函数,用于根据传递的 name 参数返回一个字符串。

我们还需要重点关注一下 graphqlHTTP 中间件的配置。我们传递了一个 schema 对象和一个 root 对象。在 graphiql 选项中设置为 true,表示启用 GraphiQL 调试工具。

现在我们可以访问 http://localhost:3000/graphql,使用 GraphiQL 发送请求并接收响应了,下面是一个示例:

GraphiQL 将发送这两个查询并在右侧的“响应”窗格中返回结果。

结论

Express.js 和 GraphQL 都是用于构建 Web 应用程序的常用工具。通过将它们相互结合使用,我们可以轻松地构建高效和灵活的 API。

在本文中,我们提供了一个简单的示例,演示了如何在 Express 中使用 GraphQL。但是,如果你继续学习,并实现更多高级功能,你可以创建一个真正灵活、高效的 API。

希望这篇文章对你有所帮助,如有任何疑问或建议,请在下方留言。

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

纠错
反馈

纠错反馈