Koa 中间件

勤奋不是嘴上说说而已,而是实际的行动,在勤奋的苦度中持之以恒,永不退却。业精于勤,荒于嬉;行成于思,毁于随。在人生的仕途上,我们毫不迟疑地选择勤奋,她是几乎于世界上一切成就的催产婆。只要我们拥着勤奋去思考,拥着勤奋的手去耕耘,用抱勤奋的心去对待工作,浪迹红尘而坚韧不拔,那么,我们的生命就会绽放火花,让人生的时光更加的闪亮而精彩。

导读:本篇文章讲解 Koa 中间件,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

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://www.bmabk.com/index.php/post/141352.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!