在 Node.js 中创建并测试 RESTful API

RESTful API 是一种常见的 Web API 设计模式,它将资源和 HTTP 动词结合起来,更加简洁和易于理解。在 Node.js 中,我们可以使用一些工具和框架来创建 RESTful API,并使用测试工具进行测试。

准备工作

在开始之前,需要准备以下工具和环境:

  • Node.js:安装最新版本的 Node.js,并确保在命令行中可以使用 nodenpm 命令。
  • Express.js:这是一个 Node.js 的 Web 框架,可以帮助我们创建 RESTful API。
  • MongoDB:这是一个 NoSQL 数据库,我们将使用它来存储数据。
  • Postman:这是一个测试工具,可以模拟发送 HTTP 请求并查看响应。

创建项目

使用以下命令创建一个新的 Node.js 项目,并安装所需的库和模块:

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

其中,express 是我们的 Web 框架,mongoose 是用于连接 MongoDB 数据库的库,body-parser 是用于解析请求体的库,cors 是用于处理跨域请求的库。

创建路由

在项目的根目录创建一个 routes 文件夹,并在其中创建一个 index.js 文件。在 index.js 文件中,创建路由对象,并定义几个 RESTful API:

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

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

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

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

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

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

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

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

在上面的代码中,我们定义了以下几个 RESTful API:

  • GET /: 返回一个简单的欢迎消息。
  • GET /books: 返回所有书的列表。
  • POST /books: 创建一本新的书。
  • GET /books/:id: 返回指定 ID 的书的详细信息。
  • PUT /books/:id: 更新指定 ID 的书。
  • DELETE /books/:id: 删除指定 ID 的书。

连接数据库

在项目的根目录创建一个 models 文件夹,并在其中创建一个 book.js 文件。在 book.js 文件中,定义一个 Book 模型,该模型将映射到 MongoDB 的 books 集合中:

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

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

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

然后,在项目的根目录创建一个 db.js 文件。在 db.js 文件中,连接到 MongoDB 数据库,并导出 db 对象:

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

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

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

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

使用路由和模型

在项目的根目录创建一个 app.js 文件,并使用 Express.js 配置应用程序:

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

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

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

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

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

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

其中,我们使用了 body-parser 来解析请求体,使用了 cors 来处理跨域请求,并使用了我们之前创建的路由和数据库连接。

现在,我们可以在 POST /books 路由中使用我们的 Book 模型来创建新的书:

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

-- ---

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

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

-- ---

其中,我们创建了一个新的 Book 对象,使用 save() 方法将其保存到数据库中,并返回一个具有新书的详细信息和状态码 201 的 JSON 响应。

测试 RESTful API

最后,我们可以使用 Postman 来测试我们的 RESTful API。打开 Postman,选择 POST 请求方法,输入 http://localhost:3000/books 作为请求 URL,选择 Body 选项卡,选择 raw 格式,选择 JSON 类型,输入以下 JSON:

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

然后单击 Send 按钮,您应该会收到类似于以下响应:

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

这表示您已成功创建了一本新的书。

可以使用 Postman 测试所有其他路由和 API。

结论

在本文中,我们介绍了如何在 Node.js 中创建 RESTful API,并使用 Express.js、MongoDB 和 Postman 进行测试。我们还学习了如何在路由中使用模型来创建、读取、更新和删除数据。

这些技术和工具是在前端开发中非常常见的,并且可以帮助我们更好地组织和管理我们的 Web 应用程序。希望这篇文章能够给你带来帮助和启示。

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