koa中间件的实验

中间件就是匹配路由之前或者匹配路由完成做的一系列的操作,我们就可以把它叫做中间件。
对此我们定义一个中间件
app.use(async (ctx,next)=>{
console.log(new Date());
await next();
if(ctx.status==404){
ctx.body=“找不到资源不好意思”
}
else {
ctx.body=“找到资源”
}
})
比如我们想在匹配路由之前输出当前时间然后去匹配路由最后根据匹配之后的路由的状态码来响应信息
成功
在这里插入图片描述
在这里插入图片描述
失败
在这里插入图片描述
时间依旧会打印

上面的例子说明了我们既可以在匹配路由之前做事情(查看当前时间)也可以在匹配路由后做事情(向浏览器响应点数据)。
接下来研究中间件的执行顺序
app.use(async (ctx,next)=>{
console.log(“路由前中间件1”);
await next();
console.log(“路由后中间件1”)
})
app.use(async (ctx,next)=>{
console.log(“路由前中间件2”)
await next();
console.log(“路由后中间件2”)
})
router.get(’/’,async (ctx)=>{
ctx.body=‘123’
console.log(“路由”)
})
输出顺序结果
在这里插入图片描述

也就是说匹配路由之前按顺序走那些在匹配路由之前要执行的中间件,那些在匹配路由后执行的中间件按反顺序执行。(个人理解)顺序可以类比栈的先进后出把每一个app.use里面的前中间件和后中间件看成一组的话。详情可以看官网,官网把顺序看成洋葱状。

发布了4 篇原创文章 · 获赞 1 · 访问量 78

猜你喜欢

转载自blog.csdn.net/qq_47103654/article/details/105589083