美文网首页
koa的中间件

koa的中间件

作者: HonneyHao | 来源:发表于2019-02-01 18:25 被阅读0次

    中间件就是匹配路由(匹配任何路由或者特定的路由,其作用比如打印日志,查看权限)之前或者匹配路由完成之后所得一系列操作,功能有:
    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第三方中间:

    相关文章

      网友评论

          本文标题:koa的中间件

          本文链接:https://www.haomeiwen.com/subject/utldsqtx.html