什么是中间件
通俗的讲:中间件就是匹配路由之前或者匹配路由完成做的一系列的操作,我们就可以把它叫做中间件。在 express 中间件(Middleware)是一个函数,它可以访问请求对象(request object (req)),响应对象(response object (res)), 和 web 应用中处理请求-响应循环流程中的中间件,一般被命名为 next 的变量。在 Koa 中中间件和 express 有点类似。
中间件的功能
1.执行任何代码
2.修改请求和响应对象
3.终结请求-响应循环
4.调用堆栈中的下一个中间件
koa中间件种类
- 应用级中间件
- 路由级中间件
- 错误处理中间件
- 第三方中间件
1.应用级中间件
// 应用级中间件 匹配任何路由
app.use(async (ctx, next)=>{ // 匹配路由之前 打印日志 如果不写next 则这个路由被匹配之后 就不继续向下匹配, 无论写到上面 还是写到下面 都是先执行中间件 再去匹配路由
console.log("log")
await next(); // 当前路由匹配完成以后继续向下匹配
});
2.路由级中间件
// 路由级中间件
router.get('/details', async(ctx, next)=>{
console.log("请求详情")
await next(); // 继续匹配下一个
});
router.get('/details', async(ctx)=>{
ctx.body = '详情';
});
3.错误处理中间件
// 错误处理的中间件
app.use(async (ctx, next)=>{
console.log("这是一个中间件01");
await next();
if(ctx.status == 404){
ctx.body = '404 页面';
}else {
console.log(ctx.url)
}
});
4.第三方中间件
const static = require('koa-static');
const staticPath = './static';
app.use(static(
path.join( __dirname, staticPath)
))
const bodyParser = require('koa-bodyparser');
app.use(bodyParser());