You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
const Koa = require('koa');
|
|
|
|
const server = new Koa();
|
|
|
|
const bodyParser = require('koa-bodyparser')();
|
|
|
|
const compress = require('koa-compress')();
|
|
|
|
const cors = require('@koa/cors')(/* Add your cors option */);
|
|
|
|
const helmet = require('koa-helmet')(/* Add your security option */);
|
|
|
|
const logger = require('koa-logger')();
|
|
|
|
|
|
|
|
const requestHandler = require('./middleware/request.middleware');
|
|
|
|
const { isDevelopment } = require('./config');
|
|
|
|
const applyApiMiddleware = require('./api');
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Add here only development middlewares
|
|
|
|
*/
|
|
|
|
if (isDevelopment) {
|
|
|
|
server.use(logger);
|
|
|
|
// Logger
|
|
|
|
server.use(async (ctx, next) => {
|
|
|
|
const start = new Date();
|
|
|
|
await next();
|
|
|
|
const ms = new Date() - start;
|
|
|
|
console.log(`${ctx.method} ${ctx.url} - ${ctx.status} - ${ms}ms`);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Pass to our server instance middlewares
|
|
|
|
*/
|
|
|
|
server
|
|
|
|
.use(bodyParser)
|
|
|
|
.use(helmet)
|
|
|
|
.use(compress)
|
|
|
|
.use(cors);
|
|
|
|
|
|
|
|
server.use(requestHandler); // 必须在最后
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Apply to our server the api router
|
|
|
|
*/
|
|
|
|
applyApiMiddleware(server);
|
|
|
|
|
|
|
|
module.exports = server;
|