应用级中间件
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也是异步执行的,需要等下一步的方法执行之后才能进行下一步操作