Node.js KOA 中间件(筛选、登录权限等功能)

应用级中间件

var Koa = require("koa")
var router = require("koa-router")()



/**
 *
 * 应用级别中间件
 *
 */
app.use(async (context, next) => {
    console.log(new Date());
    next();
});

app
    .use(router.routes())
    .use(router.allowedMethods())

app.listen(8080)

路由级中间件

var Koa = require("koa")
var router = require("koa-router")()



/**
 *
 * 路由级中间件
 */
router.get('/news', async (ctx,next) => {
    console.log("中间件调用了");
    await next();
})

router.get('/news', async (ctx) => {
    console.log("方法被调用了");
    ctx.body = "这是新闻页面"
})

app
    .use(router.routes())
    .use(router.allowedMethods())

app.listen(8080)

错误处理中间件

var Koa = require("koa")
var router = require("koa-router")()



app.use(async (ctx,next)=>{
    console.log('中间件方法被调用');

    await next()  //向线下执行

/*
执行后返回的结果如果有问题 可以在后面直接捕获并处理异常
*/
    if (ctx.status === 404){
        ctx.status = 404;
        ctx.body  = "这是一个404页面"
    }else{
        console.log(ctx.url);
    }
})

router.get('/news', async (ctx) => {
    console.log("方法被调用了");
    ctx.body = "这是新闻页面"
})

app
    .use(router.routes())
    .use(router.allowedMethods())

app.listen(8080)

注意:如果需要在next()方法之后做一些操作,需要在next之前加上await 因为next也是异步执行的,需要等下一步的方法执行之后才能进行下一步操作

你可能感兴趣的:(Node.js KOA 中间件(筛选、登录权限等功能))