123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- import path from 'path';
- import Koa, { Context, DefaultState } from 'koa';
- import Router from 'koa-router';
- // 美化控制台
- import consola from 'consola/dist/consola';
- // 解析post的body体
- import bodyParser from 'koa-bodyparser';
- // 部分安全相关
- import helmet from 'koa-helmet';
- // 静态服务
- import koaStatic from 'koa-static'
- import controllers from './controllers';
- import config from './config';
- import redisMiddleware from './middlewares/redis';
- import limitMiddleware from './middlewares/limit';
- import logsMiddleware from './middlewares/logs';
- import responseMiddleware from './middlewares/response';
- const app = new Koa<DefaultState, Context>();
- /* 中间件 */
- // 安全防护
- app.use(helmet());
- // 静态资源
- app.use(koaStatic(path.join(__dirname, config.staticPath)))
- // post params解析
- app.use(bodyParser());
- // 日志
- app.use(logsMiddleware());
- // redis
- app.use(redisMiddleware());
- // 限流
- app.use(limitMiddleware());
- // 返回体格式
- app.use(responseMiddleware());
- app.on('error', (err, ctx: Context) => {
- ctx.$response(err, 'error', false);
- });
- // api 路由
- const apiRouter = new Router<DefaultState, Context>();
- apiRouter.get('/code', controllers.code);
- // 主路由
- const router = new Router<DefaultState, Context>();
- 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}`)
- });
|