中間件:中間件就是匹配路由之前或者匹配路由完成做的一系列的操作
作用:
執行任何代碼。
修改請求和響應對象。
終結請求-響應循環。
調用堆棧中的下一個中間件。
1. 應用中間件
let Koa = require('koa');
let app = new Koa();
let router = require('koa-router')();
app.use(async(ctx, next) => {
console.log(123)
next()
})
router.get('/', async(ctx) => {
ctx.body = '這個是頁面'
});
router.get('/news', async(ctx) => {
ctx.body = '新聞頁面'
})
router.get('/login', async(ctx) => {
ctx.body = '登錄頁面'
})
app
.use(router.routes())
.use(router.allowedMethods());
app.listen(3001)
2. 路由中間件
let Koa = require('koa');
let app = new Koa();
let router = require('koa-router')();
router.get('/login', async(ctx, next) => {
ctx.body = '登錄頁面'
next()
})
router.get('/login', async(ctx) => {
console.log(123)
})
app
.use(router.routes())
.use(router.allowedMethods());
app.listen(3001)
3. 錯誤處理中間件
let Koa = require('koa');
let app = new Koa();
let router = require('koa-router')();
app.use(async(ctx, next) => {
next();
if (ctx.status === 404) {
ctx.body = '對不起,你訪問的頁面不存在!!!'
} else {
console.log(ctx.url)
}
})
router.get('/', async(ctx) => {
ctx.body = '這個是頁面'
});
router.get('/news', async(ctx) => {
ctx.body = '新聞頁面'
})
app
.use(router.routes())
.use(router.allowedMethods());
app.listen(3000)