import Koa = require('koa'); import Router = require('@koa/router'); // 美化控制台 import consola = require('consola'); // 解析post的body体 import bodyParser = require('koa-bodyparser'); // 部分安全相关 import helmet = require('koa-helmet'); import controllers = require('./controllers'); import config = require('./config'); import redisMiddleware = require('./middlewares/redis'); import limitMiddleware = require('./middlewares/limit'); import logsMiddleware = require('./middlewares/logs'); import responseMiddleware = require('./middlewares/response'); const app = new Koa(); // app.proxy = true; /* 中间件 */ // 安全防护 app.use(helmet()); // post params解析 app.use(bodyParser()); // 日志 app.use(logsMiddleware()); // redis app.use(redisMiddleware()); // 限流 app.use(limitMiddleware()); // 返回体格式 app.use(responseMiddleware()); app.on('error', (err, ctx) => { ctx.$response(err, 'error', false); }); // api 路由 const apiRouter = new Router(); apiRouter.get('/code', controllers.code); // 主路由 const router = new Router(); router.get('/', controllers.home); // api路由以/api前缀 router.use('/api', apiRouter.routes(), apiRouter.allowedMethods()); app.use(router.routes()).use(router.allowedMethods()); const port = config.port; app.listen(port, () => { consola.success(`server is started at: http://localhost:${port}`) });