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 中间件的执行顺序
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/141352.html