koa的中间件

中间件就是匹配路由(匹配任何路由或者特定的路由,其作用比如打印日志,查看权限)之前或者匹配路由完成之后所得一系列操作,功能有:
1.执行任何代码
2.修改请求和和响应对象
3.终结请求-响应循环
4.调用堆栈中的下一个中间件
通过next来实现

1.应用级中间件:匹配路由之前所做的一系列操作

//中间件(中间件要放在use(route)之前):
//例如:一个匹配任何路由,打印时间的中间件
app.use(async (ctx,next)=>{
  console.log(new Date());
  await next()//当前路由匹配完成之后继续向下匹配,如果不写await next(),就会终止路由
})

2.路由级中间件:由于这个中间件只对这一个路由有作用,而不是对整个应用的路由都有作用,所以叫做路由级中间件

上面的这一段就是路由zjj的路由级中间件
router.get('/zjj', async (ctx, next) => {
  console.log("zjj");
  await next()//不写的话就不会继续向下匹配,也就是拿不到ctx.body
})
router.get('/zjj', async (ctx, next) => {
  ctx.body = '中间件'
})

3.错误处理中间件,例如:

app.use(async (ctx,next)=>{
  if(ctx.status==404){
    ctx.status=404;
    ctx.body="404页面"
  }
})

4.中间件的执行顺序:

app.use(async (ctx,next)=>{
  console.log("1");
  await next();
  console.log("3")
})
app.use(async (ctx,next)=>{
  console.log("2");
  await next()
  console.log("4")
})

打印结果是:1,2,3,4
显而易见:在匹配路由之前,要执行next()之前的代码,匹配之后,要执行next()之后的代码,类似于进入洋葱和从洋葱中心离开

5第三方中间:

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本节将结合例子和源码对koa2的中间件机制做一介绍。 什么是中间件? 中间件的本质就是一种在特定场景下使用的函数,...
    空无一码阅读 1,467评论 0 2
  • 什么是koa? 由 Express 原班人马打造的 koa,致力于成为一个更小、更健壮、更富有表现力的 Web 框...
    likely阅读 912评论 0 0
  • koa的中间件是如何设计的? koa是开源的,直接在github中获取源码:https://github.com/...
    怪爵Geekknight阅读 498评论 0 0
  • 1. 简介 这篇文章主要的目的是分析理解express的源码,网络上关于源码的分析已经数不胜数,这篇文章准备另辟蹊...
    没事造轮子阅读 1,360评论 0 8
  • 引用:https://github.com/WangZhechao/expross 1.简介 这篇文章是分析exp...
    宫若石阅读 3,128评论 1 8