🎯 一、实现目标
- 🏗️ 搭建基于 Node.js + Express 的校园生活平台后端基础框架
- 🗃️ 使用 MySQL 连接池管理数据库连接
- ⚙️ 通过 .env 管理环境变量,实现配置解耦
- 🛣️ 实现路由分组规范,方便后续功能模块扩展
- 📦 封装统一接口返回格式,规范前后端交互数据结构
- ❌ 实现通用错误处理中间件,保证服务稳定与统一错误响应
- 🧪 提供示例接口验证项目架构是否正常运行
🚧 二、实现步骤概览
1. 📦 初始化项目与安装依赖
mkdir platform_serve && cd platform_serve
npm init -y
npm install express mysql dotenv cors
2. 📂 创建目录结构
platform_serve/
├── 🚀 app.js # 项目入口
├── ⚙️ .env # 环境变量配置
├── 📁 config/
│ ├── ⚙️ config.js # 读取环境变量配置
│ └── 🗃️ db.js # 数据库连接池配置
├── 📁 controllers/
│ └── 🎮 exampleController.js # 示例接口控制器
├── 📁 middleware/
│ └── 🛡️ errorHandler.js # 通用错误处理中间件
├── 📁 routes/
│ └── 🛣️ example.js # 示例路由分组
└── 📁 utils/
└── 📦 response.js # 统一接口返回格式封装
3. ⚙️ 配置 .env 文件
写入数据库及服务端口相关配置,方便环境切换:
PORT=3000
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=root
DB_NAME=school_life_platform
4. 📝 编写配置文件与数据库连接
⚙️ config/config.js 负责读取环境变量
require('dotenv').config();
module.exports = {
PORT: process.env.PORT || 3000,
DB_HOST: process.env.DB_HOST,
DB_USER: process.env.DB_USER,
DB_PASSWORD: process.env.DB_PASSWORD,
DB_NAME: process.env.DB_NAME,
};
🗃️ config/db.js 负责创建并测试 MySQL 连接池
const mysql = require('mysql');
const config = require('./config');
const pool = mysql.createPool({
host: config.DB_HOST,
user: config.DB_USER,
password: config.DB_PASSWORD,
database: config.DB_NAME,
port: 3306,
});
pool.getConnection((err, connection) => {
if (err) {
console.error('❌ 数据库连接失败:', err.message);
} else {
console.log('✅ 数据库连接成功');
connection.release();
}
});
module.exports = pool;
5. 📦 编写统一接口返回格式工具
utils/response.js
exports.success = (res, data = null, message = '操作成功') => {
res.json({
success: true,
message,
data,
});
};
exports.fail = (res, message = '操作失败', data = null, statusCode = 400) => {
res.status(statusCode).json({
success: false,
message,
data,
});
};
6. 🎮 编写示例控制器 controllers/exampleController.js
const { success, fail } = require('../utils/response');
exports.hello = (req, res) => {
try {
success(res, null, '校园生活平台后端已运行!');
} catch (err) {
fail(res, '服务器错误');
}
};
7. 🛣️ 设计路由分组 routes/example.js
const express = require('express');
const router = express.Router();
const exampleController = require('../controllers/exampleController');
router.get('/hello', exampleController.hello);
module.exports = router;
8. 🛡️ 编写通用错误处理中间件 middleware/errorHandler.js
module.exports = (err, req, res, next) => {
console.error(err.stack);
res.status(500).json({
success: false,
message: '服务器内部错误',
error: err.message || '未知错误',
});
};
9. 🚀 编写项目入口 app.js
const express = require('express');
const cors = require('cors');
const config = require('./config/config');
const exampleRoutes = require('./routes/example');
const errorHandler = require('./middleware/errorHandler');
require('./config/db');
const app = express();
app.use(cors());
app.use(express.json());
// 路由分组挂载
app.use('/api/example', exampleRoutes);
// 404 处理
app.use((req, res) => {
res.status(404).json({
success: false,
message: '接口不存在',
});
});
// 通用错误处理中间件
app.use(errorHandler);
app.listen(config.PORT, () => {
console.log(`🚀 服务器已启动:http://localhost:${config.PORT}`);
});
🚀 三、启动与测试
▶️ 启动服务
node app.js
🌐 访问测试接口
打开浏览器或使用 Postman 等工具访问:
GET http://localhost:3000/api/example/hello
✅ 预期响应结果
{
"success": true,
"message": "校园生活平台后端已运行!",
"data": null
}