egg 中间件编写

一、自定义中间件

1.在app目录下新建 middleware 文件夹,在 middleware文件夹里面新建一个中间件的文件。我这里新建一个printdate.js 文件

/*
options: 中间件的配置项,框架会将 app.config[${middlewareName}] 传递进来。
app: 当前应用 Application 的实例。
 
配置中间件
*/
module.exports = (options, app)=>{
//返回一个异步的方法
return async (ctx,next)=>{
//打印时间操作
console.log(new Date());
await next();
}
}

在这里插入图片描述
2.使用printdate 这个中间件,在 config/config.default.js文件中添加配置

config.middleware = ['printdate'];

printdate 是文件的名称。
在这里插入图片描述
配置好之后就中间件就已经写好了。现在每次请求都会打印一下时间!!!

3.传入参数到中间件中,在 config/config.default.js 配置参数
在这里插入图片描述

在这里插入图片描述

options 的值就是在 config.default.js 文件里面给中间件配置的参数。

中文文档:https://eggjs.org/zh-cn/basics/middleware.html

二、路由中间件

1、新建 middleware/auth.js

module.exports = (options, app)=>{
console.log(options);
//返回一个异步的方法
return async (ctx,next)=>{
//打印时间操作
console.log(new Date());
//这里也可以做权限验证之类的
await next();
}
}

2、router.js 挂载指定的中间件

'use strict';
 
/**
 * @param {Egg.Application} app - egg application
 */
module.exports = app => {
const { router, controller } = app;
const auth = app.middleware.auth({ attr: '参数1' });
 
router.get('/', controller.home.index);
router.get("/admin/:id",auth,controller.admin.index)
};

在这里插入图片描述
当执行http://localhost:7001/admin/1 路由的时候,就会执行auth这个中间件

三、框架默认中间件的配置

在 config.default.js文件里面配置bodyParser中间件的参数

config.bodyParser={ jsonLimit:'10mb' //Defaultis1mb. }

四、Egg.js 中使用 koa 的中间件 (规范的 Koa 的中间件)

以 koa-compress 为例,使用 koa-compress 开启服务器 Gzip 压缩功能;

1.在middleware文件夹下新建compress.js 文件,在文件里面引用koa-compress中间件

module.exports=require('koa-compress');

2.在 config/config.default.js文件中添加配置

config.middleware = ['compress'];
config.compress = {
threshold: 1024 //它支持指定只有当 body 大于配置的 threshold 时才进行 gzip 压缩
};

五、Egg.js 中使用 koa 的中间件 (非规范的 Koa 中间件)

app/middleware/webpack.js

constwebpackMiddleware=require('some-koa-middleware');
module.exports=(options,app)=>{ 
    return webpackMiddleware(options.compiler,options.others); 
}

六、Egg.js 中间件的通用配置

enable:控制中间件是否开启。 

match:设置只有符合某些规则的请求才会经过这个中间件。 

ignore:设置符合某些规则的请求不经过这个中间件。

在这里插入图片描述
API文档地址:https://eggjs.org/zh-cn/basics/middleware.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值