使用 Express.js 和 GraphQL 构建 API 接口

随着 Web 应用程序的复杂性越来越高,前端开发人员需要使用一些高效的工具来管理应用程序中的数据。在这种情况下,GraphQL 是一个非常好的选择,因为它提供了一种强大的数据查询语言,使得前端应用程序可以高效地与后端 API 进行通信。

而 Express.js 是一个流行的 Node.js Web 应用程序框架,它提供了一些强大的工具来构建 Web 应用程序。在本文中,我们将看到如何使用 Express.js 和 GraphQL 构建一个强大的 API 接口。

安装和配置

首先,在你开始使用 Express.js 和 GraphQL 构建 API 接口之前,你需要先安装它们。你可以使用 npm 命令来安装这些工具:

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

安装完成后,你需要对 Express.js 进行配置,以便开始开发 API 接口。在你的项目中,创建一个文件夹,命名为 controllers,用来存放所有的控制器函数。

创建一个名为 server.js 的文件,并在此处配置 Express.js,你需要导入 expressexpress-graphql 模块,创建一个 Express.js 实例。

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

接下来,你需要为 GraphQL 创建一个 GraphQL schema,并注册它们到 Express.js 实例中。在这个示例中,我们将使用一个简单的 GraphQL schema 来获取所有用户的信息。

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

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

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

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

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

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

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

现在你已经成功地配置了 Express.js 和 GraphQL。

构建 API 接口

在 Express.js 中,API 接口通常由控制器函数来实现。控制器函数负责处理客户端请求,并作出相应的响应。在本篇文章中,我们将使用 UserController 来处理所有用户相关的请求。

controllers 文件夹中创建一个名为 UserController.js 的文件,编写如下代码:

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

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

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

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

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

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

如上所示,控制器函数包含了获得所有用户、获得单个用户、创建用户、更新用户以及删除用户等功能,使用这些函数即可实现完整的用户管理接口。

现在,你可以在 Express.js 实例中注册控制器函数,以便在客户端请求时调用这些函数。

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

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

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

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

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

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

到这里,你已经成功地使用 Express.js 和 GraphQL 构建了一个完整的 API 接口,可以像下面这样使用:

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

总结

本文介绍了使用 Express.js 和 GraphQL 构建 API 接口的详细步骤和示例代码,我们可以看到,Express.js 提供了一些强大的工具来管理 Web 应用程序,而 GraphQL 则提供了一种强大的数据查询语言,使得前端应用程序可以高效地与后端 API 进行通信。通过本文的学习,你可以从零开始创建自己的 API 接口,并掌握如何使用 Express.js 和 GraphQL 构建出高效的 Web 应用程序。

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