首页 >> 大全

Koa 中间件

2023-10-15 大全 44 作者:考证青年

1. Koa 中间件简介

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

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

中间件的功能包括:

如果 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 的中间件和 不同,Koa 选择了洋葱圈模型。

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了