koa中間件

中間件:中間件就是匹配路由之前或者匹配路由完成做的一系列的操作
作用:
	執行任何代碼。
	修改請求和響應對象。
	終結請求-響應循環。
	調用堆棧中的下一個中間件。
1. 應用中間件
let Koa = require('koa');
let app = new Koa();
let router = require('koa-router')();

// 應用級中間件
// 每次訪問路由都會打印123
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')();


// 路由中間件,訪問login後打印123
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')();

// 應用級中間件
// ctx.status 請求狀態碼
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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章