forked from p96170835/amis
60 lines
1.8 KiB
JavaScript
60 lines
1.8 KiB
JavaScript
const path = require('path');
|
|
const fs = require('fs');
|
|
const DIRNAME = path.dirname(__filename);
|
|
|
|
module.exports = function(req, res) {
|
|
const subpath = (req.originalUrl || req.url).replace(/^\/(api\/mock2|api)\/|\?.*$/g, '');
|
|
const jsonFile = subpath + '.json';
|
|
const jsFile = subpath + '.js';
|
|
|
|
if (subpath == 'options/users') {
|
|
let json = readJson(jsonFile);
|
|
let term = req.query.term;
|
|
|
|
if (term) {
|
|
json.data = json.data.filter(item => item.label.substring(0, term.length) === term);
|
|
}
|
|
|
|
return res.json(json);
|
|
} else if (/^sample/.test(subpath)) {
|
|
let file = require.resolve(path.join(DIRNAME, 'sample.js'));
|
|
delete require.cache[file];
|
|
return require(file)(req, res);
|
|
} else if (exist(jsFile)) {
|
|
let file = require.resolve(path.join(DIRNAME, jsFile));
|
|
delete require.cache[file];
|
|
|
|
if (req.query.waitSeconds) {
|
|
return setTimeout(function() {
|
|
require(file)(req, res);
|
|
}, parseInt(req.query.waitSeconds, 10) * 1000);
|
|
}
|
|
|
|
return require(file)(req, res);
|
|
} if (exist(jsonFile)) {
|
|
if (req.query.waitSeconds) {
|
|
return setTimeout(function() {
|
|
res.json(readJson(jsonFile));
|
|
}, parseInt(req.query.waitSeconds, 10) * 1000);
|
|
}
|
|
|
|
return res.json(readJson(jsonFile));
|
|
} else if (/crud\/\d+$/.test(subpath) && req.method === 'DELETE') {
|
|
return res.json({
|
|
status: 0,
|
|
msg: '删除成功'
|
|
})
|
|
}
|
|
|
|
res.json(readJson('notFound.json'));
|
|
}
|
|
|
|
function exist(subpath) {
|
|
return fs.existsSync(path.join(DIRNAME, subpath));
|
|
}
|
|
|
|
function readJson(subpath) {
|
|
const content = fs.readFileSync(path.join(DIRNAME, subpath), 'utf8');
|
|
return JSON.parse(content);
|
|
}
|