如何使用 Express.js 和 MongoDB 构建 RESTful API
RESTful API 是构建 Web 应用程序和服务的关键组件之一。使用 Node.js 平台上的 Express.js 和 MongoDB,可以轻松地构建功能强大、高效和可伸缩的 RESTful API。
本文将介绍如何使用 Express.js 和 MongoDB 构建 RESTful API,包括以下内容:
建立项目和安装依赖
连接 MongoDB 数据库
创建 CRUD API
使用中间件处理请求
错误处理
单元测试
建立项目和安装依赖
首先,创建一个新的 Express.js 项目并安装所需的依赖项:
mkdir express-mongodb-api cd express-mongodb-api npm init -y npm install express mongoose body-parser --save
这里,我们使用了 Body-parser 中间件来处理请求正文,并使用 Mongoose 来操作 MongoDB 数据库。
- 连接 MongoDB 数据库
在项目根目录下创建一个 config 目录,并在其中创建一个 db.js 文件:
// config/db.js module.exports = { url: 'mongodb://localhost:27017/express-mongodb-api' };
这里,我们指定了 MongoDB 数据库的 URL。接下来,在 app.js 文件中连接到数据库:
-- -------------------- ---- ------- -- ------ ----- ------- - ------------------- ----- -------- - -------------------- ----- ---------- - ----------------------- ----- -------- - ----------------------- ----- --- - ---------- ------------------------------ - ---------------- ---- -- -------- -- -------------------- --------------- ---------- -- ------------------ --------------------------- ------------------------------- --------- ---- ---- -- ------ ----- ---- - ---------------- -- ----- ---------------- -- -- ------------------- ------- -- ---- -----------
这里,我们使用 Mongoose.connect() 方法连接到 MongoDB 数据库,并使用 Promise 进行异步处理。然后,我们使用 Body-parser 中间件来处理请求正文,并启动 Express.js 服务器。
- 创建 CRUD API
现在,我们可以开始定义 RESTful API 的路由和处理程序。
首先,我们需要为我们的数据模型创建 Mongoose 模式。在 models 目录下创建一个 user.js 文件:
-- -------------------- ---- ------- -- -------------- ----- -------- - -------------------- ----- ---------- - --- ----------------- ----------- - ----- ------- --------- ---- -- ---------- - ----- ------- --------- ---- -- ------ - ----- ------- --------- ---- - --- -------------- - ---------------------- ------------
这里,我们定义了一个名为 User 的模式,其中包含姓、名和电子邮件属性。
接下来,我们可以创建处理程序来处理用户资源的 CRUD 操作。在 controllers 目录下创建一个 user.js 文件:
-- -------------------- ---- ------- -- ------------------- ----- ---- - -------------------------- -------------- - - ------- ----- ---- ----- -- - ----------- ------- ----------- -- - ---------------------------- -- ---------- -- - ---------- --- -- ------- ----- ---- ----- -- - ----- ---- - --- ------ ----------- -------------------- ---------- ------------------- ------ -------------- --- ----------- ---------- -- - ---------------------- -------- ----- ------- -------------- ----- ---- --- -- ---------- -- - ---------- --- -- -------- ----- ---- ----- -- - -------------------------------- ------- ---------- -- - -- ------ - --------------------------- - ---- - ---------------------- -------- ----- --- ------ --- - -- ---------- -- - ---------- --- -- ----------- ----- ---- ----- -- - ----- ------- - --- --- ------ --- -- --------- - ------------ - -------------- - ----------------------------------------- - ----- ------- -- ------- ---------- -- - -- ------ - ---------------------- -------- ----- ------- ------------- --- - ---- - ---------------------- -------- ----- --- ------ --- - -- ---------- -- - ---------- --- -- ----------- ----- ---- ----- -- - ----------------------------------------- ------- ---------- -- - -- ------ - ---------------------- -------- ----- ------- ------------- --- - ---- - ---------------------- -------- ----- --- ------ --- - -- ---------- -- - ---------- --- - --
这里,我们定义了一个名为 User 的控制器,其中包含处理程序来执行用户资源的 CRUD 操作。
- 使用中间件处理请求
在处理程序之前,我们可以定义一个中间件函数,用于验证用户 ID 是否有效。在 middleware 目录下创建一个 validate-id.js 文件:
-- -------------------- ---- ------- -- ------------------------- ----- -------- - -------------------- -------------- - ----- ---- ----- -- - -- ----------------------------------------------------- - ---------------------- -------- -------- ---- --- --- - ---- - ------- - --
这里,我们使用 Mongoose.Types.ObjectId.isValid() 方法验证用户 ID 是否有效。
接下来,在 app.js 文件中使用中间件处理程序:
-- -------------------- ---- ------- -- ------ ----- ---------- - ------------------------------------ ----- -------------- - ------------------------------ ----------------- ----------------------- ------------------ ----------------------- ------------------------- ----------- ------------------------ ------------------------- ----------- --------------------------- ---------------------------- ----------- ---------------------------
这里,我们使用 app.get()、app.post()、app.put() 和 app.delete() 方法定义资源路由,并使用中间件 validateId 处理程序以确保用户 ID 是有效的。
- 错误处理
在处理程序和中间件中,可能会发生错误。我们可以定义错误处理程序来处理这些错误,并发送适当的 HTTP 响应。
在 app.js 文件中定义错误处理程序:
// app.js app.use((err, req, res, next) => { console.error(err.stack); res.status(500).json({ message: 'Internal server error' }); });
这里,我们使用 app.use() 方法定义一个错误处理程序,并发送适当的 HTTP 响应。
- 单元测试
最后,我们可以编写单元测试来测试我们的路由和控制器。在 test 目录下创建一个 user.test.js 文件:
-- -------------------- ---- ------- -- ----------------- ----- ------- - --------------------- ----- --- - ------------------ ----- -------- - -------------------- ----- ---- - -------------------------- --------------- -- -- - ----- -------------------------------------------------- - ---------------- ---- --- --- -------------- -- -- - ----- ----------------------------------- ----- ---------------------------- --- -------------- ----- -- -- - --- ----- ---------------- -- -- - ---- - --- ------ ----------- ------- ---------- ------ ------ ---------------------- --- ----- ------------ --- --------------- -- -- - ----- -------------------- --- ------------- -------- -- -- - ---------- ------ --- ------- ----- -- -- - ----- --- - ----- --------------------------- -------------------------------- ----------------------------------- --- --- -------------- -------- -- -- - ---------- ------ - --- ------ ----- -- -- - ----- --- - ----- ------------ --------------- ------- ----------- ------- ---------- ------ ------ ---------------------- --- -------------------------------- -------------------------------------- ------- --------------- --- --- ------------- ---------------- -- -- - ---------- ------ - ---- -- ---- ----- -- -- - ----- --- - ----- --------------------------------------- -------------------------------- -------------------------------------------- --- --- ------------- ---------------- -- -- - ---------- ------ - ---- -- ---- ----- -- -- - ----- --- - ----- ------------ -------------------------- ------- ----------- ------ --- -------------------------------- -------------------------------------- ------- --------------- --- --- ---------------- ---------------- -- -- - ---------- ------ - ---- -- ---- ----- -- -- - ----- --- - ----- ------------------------------------------ -------------------------------- -------------------------------------- ------- --------------- --- --- ---
这里,我们使用 Supertest 测试框架和 jest 进行单元测试,并执行所有用户资源的 CRUD 操作。
结论
通过使用 Express.js 和 MongoDB,我们可以轻松地构建功能强大、高效和可伸缩的 RESTful API。在本文中,我们介绍了如何建立项目和安装依赖项、连接到 MongoDB 数据库、创建 CRUD API、使用中间件处理请求、错误处理和单元测试。这为我们的项目提供了一些指导和启示,帮助我们更好地构建和维护我们自己的 API。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6709c6d2d91dce0dc87b93ea