app.ts 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import Koa = require('koa');
  2. import Router = require('@koa/router');
  3. // 美化控制台
  4. import consola = require('consola');
  5. // 解析post的body体
  6. import bodyParser = require('koa-bodyparser');
  7. // 部分安全相关
  8. import helmet = require('koa-helmet');
  9. import controllers = require('./controllers');
  10. import config = require('./config');
  11. import redisMiddleware = require('./middlewares/redis');
  12. import limitMiddleware = require('./middlewares/limit');
  13. import logsMiddleware = require('./middlewares/logs');
  14. import responseMiddleware = require('./middlewares/response');
  15. const app = new Koa();
  16. // app.proxy = true;
  17. /* 中间件 */
  18. // 安全防护
  19. app.use(helmet());
  20. // post params解析
  21. app.use(bodyParser());
  22. // 日志
  23. app.use(logsMiddleware());
  24. // redis
  25. app.use(redisMiddleware());
  26. // 限流
  27. app.use(limitMiddleware());
  28. // 返回体格式
  29. app.use(responseMiddleware());
  30. app.on('error', (err, ctx) => {
  31. ctx.$response(err, 'error', false);
  32. });
  33. // api 路由
  34. const apiRouter = new Router();
  35. apiRouter.get('/code', controllers.code);
  36. // 主路由
  37. const router = new Router();
  38. router.get('/', controllers.home);
  39. // api路由以/api前缀
  40. router.use('/api', apiRouter.routes(), apiRouter.allowedMethods());
  41. app.use(router.routes()).use(router.allowedMethods());
  42. const port = config.port;
  43. app.listen(port, () => {
  44. consola.success(`server is started at: http://localhost:${port}`)
  45. });