amis/mock/index.js

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);
}