使用 Node.js 和 Express 构建 REST API:完整教程
作者:xiaoxin.gao · 2025-07-03 · 阅读时间:5分钟
引言 在这篇教程中,我们将介绍如何使用 Node.js、Express 和 MongoDB 构建一个功能齐全的 […]
引言
在这篇教程中,我们将介绍如何使用 Node.js、Express 和 MongoDB 构建一个功能齐全的 RESTful API。这个教程适合 编程初学者 和 Web 开发爱好者,通过实际项目来学习如何进行 API 开发、数据库连接以及后端开发中的常见操作。
环境准备
安装 Node.js 和 Express

首先,确保你已经安装了 Node.js。然后,我们使用 Express 来简化 API 的创建流程:
-
初始化 Node.js 项目:
npm init -y -
安装 Express 和 Mongoose(用于与 MongoDB 交互):
npm install express mongoose
安装开发工具

接下来,我们安装开发时常用的工具:
- dotenv:处理环境变量。
- nodemon:自动重启服务器。
npm install --save-dev dotenv nodemon
创建服务器
配置 Express 服务器
在 server.js 文件中配置服务器:
const express = require('express');
const app = express();
const mongoose = require('mongoose');
const dotenv = require('dotenv');
// 加载环境变量
dotenv.config();
// 连接 MongoDB
mongoose.connect(process.env.DATABASE_URL, { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => console.log('连接到数据库成功'))
.catch((err) => console.error('连接数据库失败:', err));
app.listen(3000, () => {
console.log('服务器启动,监听端口 3000');
});
配置数据库连接
使用 Mongoose 连接到 MongoDB 数据库。我们将数据库连接字符串存储在 .env 文件中,以避免泄露敏感信息:
DATABASE_URL=mongodb://localhost:27017/subscribers
创建数据库模型
定义订阅者模型
接下来,使用 Mongoose 创建一个订阅者模型:
const mongoose = require('mongoose');
const subscriberSchema = new mongoose.Schema({
name: {
type: String,
required: true
},
subscribedToChannel: {
type: String,
required: true
},
subscribeDate: {
type: Date,
required: true,
default: Date.now
}
});
module.exports = mongoose.model('Subscriber', subscriberSchema);
创建路由
配置 RESTful 路由
我们为订阅者创建以下 API 路由:
GET /subscribers:获取所有订阅者。GET /subscribers/:id:根据 ID 获取特定订阅者。POST /subscribers:添加新的订阅者。PATCH /subscribers/:id:更新订阅者信息。DELETE /subscribers/:id:删除订阅者。
const express = require('express');
const Subscriber = require('./models/subscriber');
const router = express.Router();
// 获取所有订阅者
router.get('/subscribers', async (req, res) => {
try {
const subscribers = await Subscriber.find();
res.json(subscribers);
} catch (err) {
res.status(500).json({ message: '服务器错误' });
}
});
// 获取指定 ID 的订阅者
router.get('/subscribers/:id', async (req, res) => {
try {
const subscriber = await Subscriber.findById(req.params.id);
if (!subscriber) {
return res.status(404).json({ message: '未找到订阅者' });
}
res.json(subscriber);
} catch (err) {
res.status(500).json({ message: '服务器错误' });
}
});
// 添加新订阅者
router.post('/subscribers', async (req, res) => {
const subscriber = new Subscriber({
name: req.body.name,
subscribedToChannel: req.body.subscribedToChannel
});
try {
const newSubscriber = await subscriber.save();
res.status(201).json(newSubscriber);
} catch (err) {
res.status(400).json({ message: '请求无效,缺少必填字段' });
}
});
// 更新订阅者
router.patch('/subscribers/:id', async (req, res) => {
try {
const subscriber = await Subscriber.findById(req.params.id);
if (!subscriber) {
return res.status(404).json({ message: '未找到订阅者' });
}
if (req.body.name) subscriber.name = req.body.name;
if (req.body.subscribedToChannel) subscriber.subscribedToChannel = req.body.subscribedToChannel;
const updatedSubscriber = await subscriber.save();
res.json(updatedSubscriber);
} catch (err) {
res.status(400).json({ message: '请求无效' });
}
});
// 删除订阅者
router.delete('/subscribers/:id', async (req, res) => {
try {
const subscriber = await Subscriber.findById(req.params.id);
if (!subscriber) {
return res.status(404).json({ message: '未找到订阅者' });
}
await subscriber.remove();
res.json({ message: '已删除订阅者' });
} catch (err) {
res.status(500).json({ message: '服务器错误' });
}
});
module.exports = router;
设置中间件
通过中间件函数 getSubscriber 来获取订阅者信息,避免在每个路由中重复代码。
const getSubscriber = async (req, res, next) => {
try {
const subscriber = await Subscriber.findById(req.params.id);
if (!subscriber) {
return res.status(404).json({ message: '未找到订阅者' });
}
res.subscriber = subscriber;
next();
} catch (err) {
res.status(500).json({ message: '服务器错误' });
}
};
测试和调试
使用 Postman 或 Visual Studio Code 的 REST Client 插件测试 API 路由,确保 CRUD 操作(创建、读取、更新、删除)都能正常工作。
示例请求
-
获取所有订阅者:
GET http://localhost:3000/subscribers -
添加订阅者:
POST http://localhost:3000/subscribers Content-Type: application/json { "name": "John Doe", "subscribedToChannel": "Web Dev Simplified" }
总结
通过本教程,我们学习了如何使用 Node.js、Express 和 MongoDB 创建一个 RESTful API。从环境设置到数据库操作,再到路由配置和中间件,您已经掌握了构建 API 的基础知识。接下来,您可以根据需求扩展该 API,加入更多功能,优化性能,或进行安全加固。
原文引自YouTube视频:https://www.youtube.com/watch?v=fgTGADljAeg
热门推荐
一个账号试用1000+ API
助力AI无缝链接物理世界 · 无需多次注册
3000+提示词助力AI大模型
和专业工程师共享工作效率翻倍的秘密
最新文章
- 为什么要使用Google My Business Reviews API
- 2025年7月第2周GitHub热门API推荐:rustfs/rustfs、pocketbase/pocketbase、smallcloudai/refact
- API设计的首要原则
- 左手用R右手Python系列——百度地图API调用与地址解析/逆解析
- 实测:阿里云百炼上线「全周期 MCP 服务」,AI 工具一站式托管
- 什么是GitHubActions实现开源项目的自动化
- 使用 Whisper API 通过设备麦克风把语音转录为文本
- 如何通过Password Manager(密码管理器)的API调用保护账户安全
- 如何为现代图形API编写渲染器 | Clean Rinse
- Python + BaiduTransAPI :快速检索千篇英文文献(附源码)
- Nexus API 的入门教程与使用指南
- API 规范:设计与最佳实践