阅读 96

Koa 中间件

1. Koa 中间件简介

通俗的讲:中间件就是 匹配路由之前 或者 匹配路由完成后 做的一系列的操作,我们就可以把它叫做中间件。

在 express, 中间件(Middleware)是一个函数,它可以访问请求对象(request), 响应对象(response), 和 web 应用中处理请求-响应循环流程中的中间件,一般被命名为 next 的变量。在 Koa 中中间件和 express 有点类似。

中间件的功能包括:

  • 执行任何代码;

  • 修改请求和响应对象;

  • 终结请求-响应循环;

  • 调用堆栈中的下一个中间件;

如果 get、post 回调函数中,没有 next 参数,那么就匹配上第一个路由,就不会往下匹配了, 如果想往下匹配的话,那么需要写 next();

2. Koa 应用可使用如下几种中间件

2.1 应用级中间件

const Koa = require('koa'); const Router = require('koa-router'); const app = new Koa(); const router = new Router(); /* 中间件 */ // 匹配任何路由 如果不写 next,这个路由被匹配到了就不会继续向下匹配  app.use(async (ctx, next) => {   ctx.body="中间件";   console.log(new Date());   await next(); }) router.get('/newsContent',async (ctx) => {   ctx.body="新闻详情" }) app.use(router.routes()); app.use(router.allowedMethods()); app.listen(3000,()=>{    console.log('应用已经启动,http://localhost:3000');  }); 复制代码

2.2 路由中间件

const Koa = require('koa'); const Router = require('koa-router'); const app = new Koa(); const router = new Router(); /* 中间件 */ // 匹配到 news 路由之后继续向下匹配  router.get('/news',async (ctx, next) => {   console.log("新闻详情");     await next();  }) router.get('/news',async (ctx) => {   ctx.body="新闻详情" }) app.use(router.routes()); app.use(router.allowedMethods()); app.listen(3000,()=>{    console.log('应用已经启动,http://localhost:3000');  }); 复制代码

2.3 错误处理中间件

const Koa = require('koa'); const Router = require('koa-router'); const app = new Koa(); const router = new 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, next) => {   ctx.body="新闻详情"   console.log('新闻详情') }) app.use(router.routes()); app.use(router.allowedMethods()); app.listen(3000,()=>{    console.log('应用已经启动,http://localhost:3000');  }); 复制代码

2.4 第三方中间件

const static = require('koa-static');  const staticPath = './static';  app.use(static(  path.join( __dirname, staticPath)  )) const bodyParser = require('koa-bodyparser'); app.use(bodyParser()); 复制代码

3. Koa 中间件的执行顺序

Koa 的中间件和 Express 不同,Koa 选择了洋葱圈模型。

在这里插入图片描述


作者:明天也要努力
链接:https://juejin.cn/post/7022870597860327437


文章分类
后端
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐