nodejs 实践:express 最佳实践(六) express 自省获得所有的路由

某些情况下,你需要知道你的应用有多少路由,这在 express 中没有方法可以。因此我这边曲线了一下,做成了一个函数进行处理。遍历所有的方法进行处理。

代码


const _ = require('lodash');
const md5 = require('md5'); const APP_USED = [];
const ROUTER = {}; function printRouter() {
_.each(APP_USED, function(used) {
_.each(used.app._router.stack, function(stackElement) {
if (stackElement.name === 'router') {
stackElement.handle.stack.forEach((f) => {
let path = f.route.path;
let method = f.route.stack[0].method.toUpperCase(); // console.log(method + ' -> ' + used.urlBase + path);
_.updateWith(ROUTER, [used.urlBase], function(n) {
if (n) {
n.push({
method,
path: used.urlBase + path
});
} else {
n = [];
} return n;
});
});
}
});
}); let result = {}; _.forEach(ROUTER, function(val) {
val.forEach(v => {
result[v.path] = md5(v.path);
});
}); return result;
} module.exports = function(app) {
let oldUse = app.use; app.use = function() {
let urlBase = ''; if (typeof arguments[0] === 'string') {
urlBase = arguments[0];
} _.forEach(arguments, function(arg) {
if (arg.name === 'app') {
APP_USED.push({
urlBase: urlBase,
app: arg
});
}
}); oldUse.apply(app, arguments);
}; return printRouter;
};

如何使用

在所有的路由中间件之前使用。

最新文章

  1. 使用axis开发web service服务端
  2. 从jquery源码中看类型判断和数组的一些操作
  3. 泛函编程(34)-泛函变量:处理状态转变-ST Monad
  4. 线程入门之yield
  5. nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器
  6. Tomcat的使用
  7. XML的解析方式(DOM、SAX、StAX)
  8. Oracle ->> 变量赋值 Demo
  9. javascript第八课匿名函数的使用
  10. SQL多个表实现联合查询
  11. ACM第三题 完美立方
  12. mongodb取出最大值与最小值
  13. php apache phpmyadmin mysql环境安装
  14. C语言_结构体变量指针做函数参数的使用案例
  15. Python基础(zip方法)
  16. lua语言自学知识点----简单了解
  17. 利用Django实现webUI展示
  18. VUE通过id从列表页跳转到相对的详情页
  19. ArcGIS API for JavaScript经典例子
  20. python接收html页面上传的文件

热门文章

  1. ACM学习历程—HDU4717 The Moving Points(模拟退火 || 三分法)
  2. Mysql常用命令行大全(四)外键及其它
  3. JAVA操作cassandra数据库
  4. 【242】◀▶IEW-Unit07
  5. CF-816A
  6. JavaWeb_tomcat设置默认应用
  7. 使用军哥的lnmp配置虚拟主机,需要注意的是要配置hosts文件
  8. NOIP2015提高组 跳石头 ACM-ICPC2017香港 E(选择/移除+二分答案)
  9. AndroidStudio常用快捷键
  10. 洛谷P3608 [USACO17JAN]Balanced Photo平衡的照片