使用 MongoDB 创建一个基于 REST 架构的 API

REST(Representational State Transfer)是一种架构风格,用于创建只使用 HTTP 协议方法的可伸缩 Web 服务。在本文中,我们将学习如何使用 MongoDB 创建一个基于 REST 架构的 API。

MongoDB 简介

MongoDB 是一个开源的文档数据库管理系统,为面向文档的存储提供了很多优势。MongoDB 是跨平台的,支持多种编程语言。它的设计目标是为 Web 应用提供可扩展和高性能的数据存储解决方案。

目标

本文的目标是创建一个基于 REST 架构的 API,它将使用 MongoDB 来存储和检索数据。我们将通过以下步骤实现目标:

  1. 下载和安装 MongoDB。
  2. 创建一个新的 MongoDB 数据库。
  3. 定义一个 RESTful API。
  4. 实现 API 的 CRUD 操作。
  5. 通过测试 API 的所有功能。

下载和安装 MongoDB

你可以从 MongoDB 官方网站 下载适用于你的操作系统的最新版本。安装时,选择您的系统体系结构和设置。

创建一个新的 MongoDB 数据库

要创建一个新的 MongoDB 数据库,你需要打开终端并输入以下命令:

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

这将会创建一个新的数据库并切换到它。

定义一个 RESTful API

现在我们可以开始定义我们的 RESTful API。首先我们需要定义 API 的资源和操作。一个资源可以是任何你想要存储和访问的东西,如一个书籍列表或一个购物车。有四种 CRUD 操作可以执行:Create(创建)、Read(读取)、Update(更新)和Delete(删除)。

在这里,我们定义一个简单的资源:User 资源,它有两个属性:名称和电子邮件地址。我们将在 user 路由下定义以下路由:

路由 HTTP 方法 描述
/users GET 获取所有用户记录
/users/:id GET 获取单个用户记录
/users POST 创建一个新用户记录
/users/:id PUT 更新一个已有用户记录
/users/:id DELETE 删除一个用户记录

实现 API 的 CRUD 操作

现在我们已经定义了我们的 API 路由,使我们开始实现这些操作。我们将使用 Node.js 和 Express 框架来处理这些路由,并使用 MongoDB 作为我们的数据库。

安装 Node.js 和 Express

在开始之前,我们需要确保安装了 Node.js 和 Express。你可以通过 Node.js 官方网站下载 Node.js。安装完成后,打开终端并输入以下命令来安装 Express:

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

创建一个 User schema

在 Node.js 中,我们使用 Mongoose 库来操作 MongoDB 。要使用 Mongoose,我们需要创建一个新的 schema 。schema 允许我们定义 User 对象的结构。以下是我们的 User schema 代码片段:

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

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

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

这个 User schema 将被用作用户文档的模板。我们定义了两个字段:名称和电子邮件地址。timestamps 是一个选项,它将创建两个自动时间戳:创建日期和修改日期。

编写路由和控制器

我们定义了路由和模式之后,我们将使用 Express 编写路由和控制器。以下是我们用户 API 的代码:

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

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

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

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

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

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

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

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

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

这些路由允许我们操作 User 资源。我们首先导入 Express 和 User schema。然后,我们编写路由处理程序,GET 用于获取所有用户记录,POST 用于创建一个新用户记录,GET/:id 用于获取单个用户记录,PUT/:id 用于更新一个已有用户记录,DELETE/:id 用于删除一个用户记录。

连接到数据库

我们已经编写了路由和控制器代码,现在让我们将其连接到 MongoDB 数据库。我们可以在入口文件 server.js 中连接到数据库。以下是我们的代码片段:

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

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

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

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

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

测试 API

现在我们已经成功连接了数据库,我们可以通过 Postman 或 curl 等工具来测试我们的 API。以下是我们的测试代码:

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

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

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

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

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

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

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

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

我们编写了一个针对 User API 的测试套件,它测试了我们 API 的每一项功能。

结论

本文介绍了如何使用 MongoDB 创建基于 REST 架构的 API。我们学习了如何使用 Mongoose 库在 Node.js 中操作 MongoDB 数据库。我们还创建了一个用户资源,并定义了 CRUD 操作。最后,我们通过使用 Postman 进行了测试。在完成本文之后,你可以使用更复杂的资源和路由定义来创建自己的 RESTful API,并将其连接到 MongoDB 数据库。

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