用 Node.js + Express 快速搭建 Mock 服务 —— 医生管理模块实战
在开发后台管理系统时,接口尚未联调或数据表结构未确定的阶段,我们常常需要构建一套本地 Mock 服务来保障前端开发效率。本文将以「医生管理模块」为例,介绍如何使用 Node.js 与 Express 快速搭建一套可扩展的 Mock 服务。
一、项目背景
我们正在开发一个基于 React 的后台管理系统,其中包含一个医生管理页面,具备以下功能:
- Tab 切换显示医生管理模块
- 搜索栏(可按姓名、手机号、科室等字段筛选)
- 医生分页列表(search-table 风格)
- 操作列(编辑 / 删除 / 分配科室)
- 添加医生(弹窗 / 抽屉形式,支持输入基础信息 + 选择科室)
由于后端接口尚未完成,为保障前端开发推进,我们决定:
使用 Node.js + Express + Mock.js 搭建本地 Mock 接口服务。
二、技术选型与目的
| 技术/工具 | 用途说明 |
|---|---|
| Node.js | 搭建本地后端服务 |
| Express | 快速构建接口 API |
| Mock.js | 生成假数据响应 |
| Nodemon | 支持开发阶段热更新 |
| CORS | 解决跨域请求问题 |
三、项目结构说明
mock-server/
├── app.js # 主入口文件
├── routes/
│ └── doctor.js # 医生管理模块的 Mock 接口
├── mock/
│ └── doctorData.js # 使用 Mock.js 生成的模拟数据
├── package.json
四、初始化项目
mkdir mock-server && cd mock-server
npm init -y
npm install express cors mockjs
npm install --save-dev nodemon
修改 package.json 脚本:
"scripts": {
"dev": "nodemon app.js"
}
五、创建主入口 app.js
// app.js
const express = require('express');
const cors = require('cors');
const app = express();
app.use(cors());
app.use(express.json());
const doctorRoutes = require('./routes/doctor');
app.use('/api/doctor', doctorRoutes);
const PORT = 3001;
app.listen(PORT, () => {
console.log(`Mock server running at http://localhost:${PORT}`);
});
六、创建路由 routes/doctor.js
// routes/doctor.js
const express = require('express');
const router = express.Router();
const doctorData = require('../mock/doctorData');
// 获取分页列表
router.get('/list', (req, res) => {
const data = doctorData.getDoctorList(req.query);
res.json(data);
});
// 添加医生(模拟成功)
router.post('/add', (req, res) => {
res.json({ code: 0, message: '添加成功' });
});
// 编辑医生
router.post('/edit', (req, res) => {
res.json({ code: 0, message: '编辑成功' });
});
// 删除医生
router.post('/delete', (req, res) => {
res.json({ code: 0, message: '删除成功' });
});
module.exports = router;
七、Mock 数据生成 mock/doctorData.js
// mock/doctorData.js
const Mock = require('mockjs');
function getDoctorList(query) {
const total = 66;
const page = parseInt(query.page) || 1;
const pageSize = parseInt(query.pageSize) || 10;
const list = Mock.mock({
[`data|${pageSize}`]: [
{
id: '@id',
name: '@cname',
mobile: /^1[3-9]\d{9}$/,
department: '@word(5)',
status: '@pick(["在职", "离职"])'
}
]
});
return {
code: 0,
data: list.data,
total,
page,
pageSize
};
}
module.exports = {
getDoctorList
};
八、启动并访问
启动服务:
npm run dev
访问接口:
GET /api/doctor/list?page=1&pageSize=10POST /api/doctor/addPOST /api/doctor/editPOST /api/doctor/delete
你现在拥有了一个基于 Node.js、Express 和 Mock.js 的完整 Mock 服务,可以无缝衔接前端开发流程,后续也能轻松接入真实后端。