const express = require('express'); //引入express const Mock = require('mockjs'); //引入mock const fs = require('fs'); const app = express(); //实例化express const { routerLog, writeLog } = require('./writeLog'); app.use(function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS'); res.header("Access-Control-Allow-Headers", "X-Requested-With"); res.header('Access-Control-Allow-Headers', 'Content-Type'); next(); }); fs.writeFile('./routerLog.md', ' \n # 路由 \n', function(error) { if (error) { console.log('写入失败') } else { console.log('markdown 写入路由记录') } }) const directory = './data/'; loopPath(directory); //循环目录 function loopPath(directory) { const paths = fs.readdirSync(directory); let logs = ""; for (let i = 0; i < paths.length; i++) { const file = directory + paths[i]; if (isDirectory(file)) { const subDirectory = file + "/"; loopPath(subDirectory); } else { if (fs.existsSync(`${file}`)) { const dataConfigs = require(`${file}`); // console.log('dataConfigs', dataConfigs); const configs = dataConfigs.routerConfigs; const baseUrl = dataConfigs.basicRouteUrl; logs += `\n ## 路由 --- ${dataConfigs.basicRouteName} \n\n`; for (let i = 0; i < configs.length; i++) { configs[i].responseExample = JSON.stringify( FormatMockData({ data: configs[i].mockData }) ); logs += routerLog(configs[i]); const { url, type } = configs[i]; const mockUrl = "/" + baseUrl + url; console.log("路由信息:", "url:", mockUrl, "type:", type); loopRouteConfig(mockUrl, configs[i]); } } } } writeLog(logs); } // 注册路由 function loopRouteConfig(mockUrl, { type, mockData }) { app[type](mockUrl, function(req, res) { res.json( FormatMockData({ mockData }) ); }); } // 是否为目录 function isDirectory(directory) { return fs.lstatSync(directory).isDirectory() ? true : false; } // mock 模拟数据 mock json function FormatMockData({ mockData }) { const status200 = { code: 0, message: "成功" }; return { ...status200, ...Mock.mock(mockData) }; } app.listen('8090', () => { console.log('mock 模拟地址 :http://localhost:8090/') })