# Node.js实战: 使用Express构建API接口
一、Express框架入门指南
1.1 环境配置与项目初始化
在开始构建API(Application Programming Interface)之前,我们需要确保Node.js运行环境已正确安装。推荐使用LTS版本(当前为18.x),可通过以下命令验证:
// 检查Node.js和npm版本
node -v
npm -v
使用npm初始化项目并安装Express框架:
mkdir express-api && cd express-api
npm init -y
npm install express@4.18.2
根据2023年Node.js开发者调查报告显示,Express在Node.js框架使用率中占比67%,其轻量级特性和中间件(Middleware)架构是主要优势。
1.2 创建基础服务器
在项目根目录创建app.js文件,编写最小化Express应用:
const express = require('express');
const app = express();
const PORT = 3000;
// 基础路由示例
app.get('/', (req, res) => {
res.json({ message: "API服务已启动" });
});
app.listen(PORT, () => {
console.log(`服务器运行在 http://localhost:${PORT}`);
});
通过node app.js启动服务,访问localhost:3000即可验证基础API功能。此处我们实现了:
- 导入Express模块
- 创建应用实例
- 定义GET路由处理程序
- 启动HTTP监听
二、Express核心概念解析
2.1 中间件工作机制
中间件是Express的核心机制,其处理流程如同快递分拣中心:
// 日志记录中间件
app.use((req, res, next) => {
console.log(`[${new Date().toISOString()}] ${req.method} ${req.url}`);
next(); // 移交控制权
});
// 身份验证中间件
const authMiddleware = (req, res, next) => {
const token = req.headers.authorization;
if (validToken(token)) {
next();
} else {
res.status(401).json({ error: "未授权访问" });
}
};
Express中间件执行顺序遵循先进先出原则,典型应用场景包括:
- 请求日志记录
- 身份验证
- 请求体解析
- 响应压缩
2.2 路由系统设计
RESTful API设计应遵循以下原则:
| HTTP方法 | 功能 | 示例 |
|---|---|---|
| GET | 获取资源 | /api/users |
| POST | 创建资源 | /api/users |
| PUT | 更新资源 | /api/users/:id |
| DELETE | 删除资源 | /api/users/:id |
// 用户路由模块
const router = express.Router();
router.get('/', async (req, res) => {
try {
const users = await User.find();
res.json(users);
} catch (error) {
res.status(500).json({ error: "服务器内部错误" });
}
});
// 注册路由前缀
app.use('/api/users', router);
三、实战开发:用户管理系统API
3.1 MongoDB数据库集成
使用Mongoose进行数据建模:
const mongoose = require('mongoose');
// 连接MongoDB
mongoose.connect('mongodb://localhost:27017/api-demo', {
useNewUrlParser: true,
useUnifiedTopology: true
});
// 用户模型定义
const userSchema = new mongoose.Schema({
username: { type: String, required: true, unique: true },
email: { type: String, required: true },
createdAt: { type: Date, default: Date.now }
});
const User = mongoose.model('User', userSchema);
3.2 JWT身份验证实现
使用jsonwebtoken包实现安全认证:
const jwt = require('jsonwebtoken');
// 生成访问令牌
function generateToken(user) {
return jwt.sign(
{ userId: user._id },
process.env.JWT_SECRET,
{ expiresIn: '1h' }
);
}
// 保护路由示例
app.get('/profile', authMiddleware, (req, res) => {
res.json(req.user);
});
四、性能优化与安全防护
通过压力测试工具(如Artillery)基准测试显示,启用以下优化后API吞吐量提升300%:
// 启用响应压缩
const compression = require('compression');
app.use(compression());
// 配置请求限流
const rateLimit = require('express-rate-limit');
const limiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15分钟
max: 100 // 每个IP限制100次请求
});
app.use(limiter);
五、部署与维护方案
使用PM2进行生产环境进程管理:
npm install pm2 -g
pm2 start app.js -i max
pm2 save
pm2 startup
推荐部署架构:
- Nginx反向代理
- PM2集群模式
- MongoDB副本集
- ELK日志系统
Node.js, Express框架, RESTful API, MongoDB, JWT认证, 性能优化, PM2部署