nodejs egg框架 自动注册路由

'use strict';

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

// filePath: app/router.js
//全局变量定义 方法object对象
global.actionObject = {};

// 实现方法Object.keys(controller[item]) == 0 时,为控制下具体方法,直接加入到actionObject集合,>0说明是多级控制器,继续遍历
function getAction(controller, path) {
  const controllerArray = Object.keys(controller);
  controllerArray.forEach(item => {
    const newPath = path + '/' + item;
    if (Object.keys(controller[item]).length > 0) {
      getAction(controller[item], newPath);
    } else {
      global.actionObject[newPath] = controller[item];
    }
  });
}
module.exports = app => {
  const { router, controller } = app;
  getAction(controller, '');
  // 得到actionObject的key数组
  const actionArray = Object.keys(global.actionObject);
  // 遍历加入到路由
  actionArray.forEach(item => {
  	//自动实现路由指向方法 需要哪种请求头任意添加
    router.get(item, global.actionObject[item]);
    router.post(item, global.actionObject[item]);
  });
  // 这里可以继续添加方法,不冲突
  router.get('/api', controller.api.home.index);
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值