Middleware 中间件

Egg 的中间件形式和 Koa 的中间件形式是一样的,都是基于洋葱圈模型。每次我们编写一个中间件,就相当于在洋葱外面包了一层。

编写中间件


写法

我们先来通过编写一个简单的中间件,来看看中间件的写法。

// app/middleware/middlewareOne.js
module.exports = (options, app) => {
return async function middlewareOne(ctx, next) {
console.log("==request one=="); console.log(ctx.url) if(ctx.url === '/'){
await next();
} console.log("==response one==");
}
};

配置

// config/config.default.js
exports.middleware = ['middlewareOne']; // 数组的顺序为中间件执行的顺序

router 中使用中间件

以上方式配置的中间件是全局的,会处理每一次请求。 如果你只想针对单个路由生效,可以直接在 app/router.js 中实例化和挂载,如下:

'use strict';

/**
* @param {Egg.Application} app - egg application
*/
module.exports = app => {
const { router, controller } = app;
const gzip = app.middleware.middlewareOne();
router.get('/', gzip, controller.home.index);
router.get('/zyu', controller.home.zyu);
router.get('/test', controller.test.index);
};

最新文章

  1. Differences between INDEX, PRIMARY, UNIQUE, FULLTEXT in MySQL?
  2. Zookeeper基本配置
  3. JAVA获取服务器路径的方法
  4. VB.NET WinForm获取运行程序用户名
  5. W3School-CSS 字体(font)实例
  6. Openfire 的安装和配置
  7. 有效Email
  8. shell 统计GMT0 时区的数据
  9. yii2归档安装
  10. JPA学习---第四节:JPA实例与JPA主键生成策略
  11. 大数据笔记11:MapReduce的运行流程
  12. Oracle Job定时任务的使用详解
  13. Effective Java 第三版——16.在公共类中使用访问方法而不是公共属性
  14. Linux多线程实践(7) --多线程排序对比
  15. iOS评分功能、APP中打开其他应用程序
  16. [LeetCode] Design HashSet 设计HashSet
  17. luogu P2327 [SCOI2005]扫雷
  18. DBUtils温习1
  19. 初识NLTK
  20. docker容器中Postgresql 数据库备份

热门文章

  1. Flask基础(13)-->Flask扩展Flask-Script
  2. javascript中字符串对象常用的方法和属性
  3. VR应用评测 - Apollo 11 阿波罗11号
  4. Android适配总结
  5. php企业微信获取员工userid以及打卡信息
  6. 富文编辑器和bs4简单实用
  7. UVa12105 越大越好
  8. idea 添加 注释 配置
  9. RF中的if判断
  10. unittest生成测试报告