介绍
REST API 是一种常见的 Web API 设计模式,它使用 HTTP 协议中的 GET、POST、PUT、DELETE 等方法来操作资源。在前端开发中,使用 REST API 可以方便地从后端获取数据和进行数据操作。
Express.js 是一种常用的 Node.js Web 框架,它提供了简单、灵活的 API,可以用来构建 Web 应用和 REST API。MongoDB 是一种 NoSQL 数据库,它可以存储非结构化数据,适合存储 JSON 格式的文档。
本文将介绍如何使用 Express.js 和 MongoDB 搭建 REST API,包括路由设置、数据库连接、数据操作等内容。
准备工作
在开始之前,需要安装 Node.js 和 MongoDB。可以从官网下载安装包进行安装。
安装完成后,在命令行中分别输入以下命令,检查是否安装成功:
node -v
mongod --version
创建项目
首先,需要创建一个新的 Node.js 项目。在命令行中进入一个空的文件夹,输入以下命令:
npm init
按照提示输入项目名称、版本号等信息,完成项目初始化。
接着,需要安装 Express.js 和 MongoDB 的相应模块。在命令行中输入以下命令:
npm install express mongoose body-parser --save
其中,express 是 Express.js 的模块,mongoose 是 MongoDB 的 ORM 模块,body-parser 是一个用于解析 HTTP 请求体的中间件。
连接数据库
在开始编写路由之前,需要先连接 MongoDB 数据库。在项目根目录下创建一个 db.js 文件,输入以下代码:
// www.javascriptcn.com code example
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/rest-api', {
useNewUrlParser: true,
useUnifiedTopology: true,
useFindAndModify: false,
useCreateIndex: true,
});
const db = mongoose.connection;
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
db.once('open', () => {
console.log('MongoDB connected!');
});这里使用了 mongoose.connect 方法连接本地的 MongoDB 数据库,rest-api 是数据库的名称。同时,也设置了一些参数,如 useNewUrlParser、useUnifiedTopology 等。
创建路由
接下来,需要创建路由来处理 HTTP 请求。在项目根目录下创建一个 routes.js 文件,输入以下代码:
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
res.send('Hello, world!');
});
module.exports = router;这里使用了 Express.js 的 Router 模块,创建了一个基础路由,当访问根路径时返回 "Hello, world!"。
启动服务器
最后,需要在项目根目录下创建一个 app.js 文件,输入以下代码:
// www.javascriptcn.com code example
const express = require('express');
const bodyParser = require('body-parser');
const db = require('./db');
const routes = require('./routes');
const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use('/', routes);
const port = process.env.PORT || 3000;
app.listen(port, () => {
console.log(`Server listening on port ${port}`);
});这里使用了 body-parser 中间件来解析 HTTP 请求体。同时,也引入了 db.js 和 routes.js 文件,并将基础路由挂载到根路径上。最后,使用 app.listen 方法启动服务器。
数据操作
现在,已经成功搭建了一个 REST API 服务器,但是还没有实现任何数据操作。下面,将介绍如何使用 mongoose 操作 MongoDB 数据库。
首先,在根目录下创建一个 models 文件夹,用于存放数据模型。在 models 文件夹下创建一个 user.js 文件,输入以下代码:
// www.javascriptcn.com code example
const mongoose = require('mongoose');
const userSchema = new mongoose.Schema({
name: String,
age: Number,
email: String,
});
const User = mongoose.model('User', userSchema);
module.exports = User;这里定义了一个 userSchema,包含了用户的姓名、年龄、邮箱等信息。然后,使用 mongoose.model 方法将 userSchema 编译成一个 User 模型,并导出。
接下来,在 routes.js 文件中添加以下代码:
// www.javascriptcn.com code example
const User = require('./models/user');
router.get('/users', async (req, res) => {
const users = await User.find();
res.json(users);
});
router.post('/users', async (req, res) => {
const { name, age, email } = req.body;
const user = new User({
name,
age,
email,
});
await user.save();
res.json(user);
});
router.put('/users/:id', async (req, res) => {
const { id } = req.params;
const { name, age, email } = req.body;
const user = await User.findByIdAndUpdate(
id,
{ name, age, email },
{ new: true },
);
res.json(user);
});
router.delete('/users/:id', async (req, res) => {
const { id } = req.params;
await User.findByIdAndDelete(id);
res.sendStatus(204);
});这里定义了 GET、POST、PUT、DELETE 四个路由,用于获取、创建、更新、删除用户信息。使用了 User 模型中的 find、save、findByIdAndUpdate、findByIdAndDelete 方法来操作数据库。
至此,已经完成了一个基本的 REST API 服务器的搭建。可以使用 Postman 等工具来测试 API 的功能。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d0e546a941bf71341e578b