用 Node.js + Express 快速搭建 Mock 服务

239 阅读2分钟

用 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=10
  • POST /api/doctor/add
  • POST /api/doctor/edit
  • POST /api/doctor/delete

你现在拥有了一个基于 Node.js、Express 和 Mock.js 的完整 Mock 服务,可以无缝衔接前端开发流程,后续也能轻松接入真实后端。