1.在框架和插件中使用中间件

编写中间件

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

// app/middleware/middlewareOne.js

// app/middleware/middlewareOne.js
module.exports = (options, app) => {
  return async function middlewarreone(ctx, next) {
    const url = ctx.request.url;
    await next();
    ctx.body = `获取到的ip是:${url}`;
  }
};

  

配置

// config/config.default.js
exports.middleware = ['middlewareOne']; // 数组的顺序为中间件执行的顺序 请求会执行 : 获取到的ip是:/data

router 中使用中间件

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

'use strict';

/**
* @param {Egg.Application} app - egg application
*/
module.exports = app => {
const {
router,
controller
} = app;
const isUrl = app.middleware.middlewarreone({params: '888',});
router.get('/', controller.home.index);
router.post('/login', controller.home.login);
router.post('/data',isUrl, controller.data.index);
router.post('/upload', controller.upload.upload); router.get('/search', controller.data.search);
};

  发送请求 同样会执行 结果:/data

												

最新文章

  1. 根据url地址单个或批量下载图片
  2. Linq 查询结果 可能遵循 2 º,2¹,2 ²,......增长计算
  3. Request.MapPath和ServerMapPath
  4. php生成对象的研究
  5. phpstorm 实用快捷键 和 注释
  6. [Leetcode][JAVA] Valid Palindrome
  7. iOS开发~UI布局(三)深入理解autolayout
  8. iOS - UITabBarController
  9. Hibernate的配置文件解析
  10. 操作Action
  11. protel99与win7兼容问题的解决方案
  12. 4日6日--ES5新增数组方法
  13. [Swift]LeetCode722. 删除注释 | Remove Comments
  14. Jmeter性能测试之Monitor监控(SSHMon Samples Collector)
  15. 淘宝客订单api处理优化
  16. 线程、进程、协程 异步io
  17. java输入输出流(I/O)总结
  18. HDU 5988 Coding Contest(费用流+浮点数)
  19. MySQL innodb中各种SQL语句加锁分析
  20. Redux入门学习

热门文章

  1. [Xcode 实际操作]八、网络与多线程-(17)使用网址会话对象URLSession向远程服务器上传图片
  2. redis-分布式锁2
  3. luoguP2408不同子串个数
  4. PAT甲级——1135 Is It A Red-Black Tree (30 分)
  5. LocalBroadcastManager
  6. swiper 解决动态加载数据滑动失效的问题
  7. 反射和__setattr__,__delattr__,__getattr__用法
  8. java中代码执行顺序
  9. Lock简介
  10. 关于Mybatis的一点小记录(parameterType)