REST(Representational State Transfer)是一种架构风格,用于创建只使用 HTTP 协议方法的可伸缩 Web 服务。在本文中,我们将学习如何使用 MongoDB 创建一个基于 REST 架构的 API。
MongoDB 简介
MongoDB 是一个开源的文档数据库管理系统,为面向文档的存储提供了很多优势。MongoDB 是跨平台的,支持多种编程语言。它的设计目标是为 Web 应用提供可扩展和高性能的数据存储解决方案。
目标
本文的目标是创建一个基于 REST 架构的 API,它将使用 MongoDB 来存储和检索数据。我们将通过以下步骤实现目标:
- 下载和安装 MongoDB。
- 创建一个新的 MongoDB 数据库。
- 定义一个 RESTful API。
- 实现 API 的 CRUD 操作。
- 通过测试 API 的所有功能。
下载和安装 MongoDB
你可以从 MongoDB 官方网站 下载适用于你的操作系统的最新版本。安装时,选择您的系统体系结构和设置。
创建一个新的 MongoDB 数据库
要创建一个新的 MongoDB 数据库,你需要打开终端并输入以下命令:
$ mongo > use myDatabase
这将会创建一个新的数据库并切换到它。
定义一个 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:
$ npm install express --save
创建一个 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