UNPKG

@aniyajs/rotor

Version:

基于webpack5开发的一款专注于打包、运行的工具

49 lines (43 loc) 1.55 kB
const bodyParser = require("body-parser"); const chalk = require("chalk"); const createLocalMockServedMiddleware = (mockData, devServer) => { return (req, res, next) => { if (mockData && Object.keys(mockData)?.length > 0) { devServer.app.use(bodyParser.json()); const newMethodOrUrl = `${req.method.toLowerCase()} ${ req._parsedUrl.pathname }`; const methodOrUrls = Object.keys(mockData).map((data) => { const curData = data.match(/[\S]+/g); return `${curData[0].toLowerCase()} ${curData[1]}`; }); if (methodOrUrls.indexOf(newMethodOrUrl) > -1) { let newMockData = {}; for (const mockMU in mockData) { const curMockMU = mockMU.match(/[\S]+/g); Object.assign(newMockData, { [`${curMockMU[0].toLowerCase()} ${curMockMU[1]}`]: mockData[mockMU], }); } const requestApi = newMockData[newMethodOrUrl]; const method = newMethodOrUrl.split(" ")[0]; const url = newMethodOrUrl.split(" ")[1]; devServer.app[method](url, (req, res) => { if ( Object.prototype.toString.call(requestApi) === "[object Function]" ) { requestApi(req, res) .then() .catch((err) => { console.log(chalk.red("Mock Error :>> "), err.message || err); }); } else { res.send(requestApi); } }); } } next(); }; }; module.exports = createLocalMockServedMiddleware;