在devServer添加如下代码
利用before在本地中运行
官网中介绍
提供在服务器内部先于所有其他中间件执行自定义中间件的功能。这可以用于定义自定义处理程序,例如:
before(app){
app.get('/some/path', function(req, res) {
res.json({ custom: 'response' });
});
}
我们把他抽离到单独的文件
devServer: {
.....
before:function (app) {
require("./../mock/index.js")(app)
}
},
建文件写json
目录结构大概如下
├── build
├── config
├── mock
│ ├── data
│ │ └── info.json
│ ├── index.js
│ └── mockData
│ ├── ageSegDef
│ │ ├── init.json
│ │ └── listPage.json
│ ├── getBatchAppList
│ │ └── index.json
│ ├── gmis
│ │ ├── assessment
│ │ │ └── web
│ │ │ └── batchApp
│ │ │ ├── getBatchAppList.json
│ │ │ └── getBatchDefList.json
│ │ └── upms
│ │ └── web
│ │ └── login
│ │ └── listAllDepts.json
│ ├── index.json
│ ├── list
│ │ ├── listData.json
│ │ └── nav
│ │ └── navlist.json
│ ├── loginout
│ │ └── loginout.json
│ └── selectMeans
│ ├── list.json
│ └── save.json
├── package-lock.json
├── package.json
├── src
└── static
内容大概如下
你想要返回的json
{
"code": "0",
"msg": "success",
"data": {
"text":"listData"
},
"redirectUrl": null
}
读取文件
文件建好后利用node中的fs模块读取文件
创建一个对象然后以key为路径文件内容为value的格式存储 如下
var routerList;
var urlib = require("url");
var fs = require('fs');
var base = __dirname + "/mockData";
function readFile (base, obj) {
var jsonData = obj, files;
files = fs.readdirSync(base)
files.forEach(file => {
var fileData = fs.statSync(base + "/" + file)
//判断是否为文件夹
if (fileData.isDirectory()) {
readFile(base + "/" + file, jsonData)
} else {
//读取文件种的内容
var data = fs.readFileSync(base + "/" + file, 'utf-8').toString();
//key 路径
//data 文件内容
//存储在对象中
jsonData[base + "/" + file] = {
data: data
}
}
})
return jsonData
}
生成接口
利用Object.entries的方法把对象转换为二维数组
//对象专数组
routerList = Object.entries(readFile(base, {}))
module.exports = function (app) {
// app == express
// 遍历生成接口
routerList.forEach(item => {
let routerUrl = item[0].replace(base, "").replace(".json", "")
// 筛选需要逻辑交互的接口
switch (routerUrl) {
//选择
case '/selectMeans/q':
{
app.get(routerUrl, (req, res) => {
var myobj = urlib.parse(req.url, true);
var pageNum = myobj.query.pageNum;
var pageSize = myobj.query.pageSize;
var resData = JSON.parse(item[1].data).dataObject.meanslist.splice((pageNum - 1) * 10, pageSize);
var newData = {
"code": "SUCCESS",
"dataObject": {
"meanslist": resData,
totalCount: JSON.parse(item[1].data).dataObject.meanslist.length
},
"message": "操作成功",
};
res.send(newData)
})
}
break;
default:
{
// 无交互直接返回文件中所取数据
app.get(routerUrl, (req, res) => {
res.send(JSON.parse(item[1].data))
})
}
break;
}
})
//登陆的接口
app.get('/login', (req, res) => {
var myobj = urlib.parse(req.url, true);
var userCode = myobj.query.userCode;
var userKey = myobj.query.userKey;
if (userCode == 'admin' && userKey == '1q2w3e4r') {
res.send(data)
return false
}
res.send({
"code": "ERR",
'token': '啦啦啦',
"message": "账号或者密码不正确",
})
})
}
完整代码
var routerList;
var fs = require('fs');
var urlib = require("url");
var base = __dirname + "/mockData";
var data = require("./data/info.json");
//readFile 读取文件获取文件的路径和文件种的内容
function readFile (base, obj) {
var jsonData = obj, files;
files = fs.readdirSync(base)
files.forEach(file => {
var fileData = fs.statSync(base + "/" + file)
//判断是否为文件夹
if (fileData.isDirectory()) {
readFile(base + "/" + file, jsonData)
} else {
//读取文件种的内容
var data = fs.readFileSync(base + "/" + file, 'utf-8').toString();
//key 路径
//data 文件内容
//存储在对象中
jsonData[base + "/" + file] = {
data: data
}
}
})
return jsonData
}
//对象专数组
routerList = Object.entries(readFile(base, {}))
module.exports = function (app) {
// app == express
//遍历生成接口
routerList.forEach(item => {
let routerUrl = item[0].replace(base, "").replace(".json", "")
// 筛选需要逻辑交互的接口
switch (routerUrl) {
case '/ageSegDef/q':
{
app.get(routerUrl, (req, res) => {
var myobj = urlib.parse(req.url, true);
var pageNum = myobj.query.pageNum;
var pageSize = myobj.query.pageSize;
var resData = JSON.parse(item[1].data).dataObject.meanslist.splice((pageNum - 1) * 10, pageSize);
var newData = {
"code": "SUCCESS",
"data": {
"dataList": resData,
totalCount: JSON.parse(item[1].data).dataObject.meanslist.length
},
"message": "操作成功",
};
res.send(newData)
})
}
break;
default:
{
// 无交互直接返回文件中所取数据
app.get(routerUrl, (req, res) => {
res.send(JSON.parse(item[1].data))
})
}
break;
}
})
//登陆的接口
app.get('/login', (req, res) => {
var myobj = urlib.parse(req.url, true);
var userCode = myobj.query.userCode;
var userKey = myobj.query.userKey;
if (userCode == 'admin' && userKey == '1q2w3e4r') {
res.send(data)
return false
}
res.send({
"code": "ERR",
'token': '啦啦啦',
"message": "账号或者密码不正确",
})
})
}