nodejs 实践:express 最佳实践(六) express 自省获得所有的路由
2024-09-03 20:30:35
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;
};
如何使用
在所有的路由中间件之前使用。
最新文章
- 使用axis开发web service服务端
- 从jquery源码中看类型判断和数组的一些操作
- 泛函编程(34)-泛函变量:处理状态转变-ST Monad
- 线程入门之yield
- nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器
- Tomcat的使用
- XML的解析方式(DOM、SAX、StAX)
- Oracle ->;>; 变量赋值 Demo
- javascript第八课匿名函数的使用
- SQL多个表实现联合查询
- ACM第三题 完美立方
- mongodb取出最大值与最小值
- php apache phpmyadmin mysql环境安装
- C语言_结构体变量指针做函数参数的使用案例
- Python基础(zip方法)
- lua语言自学知识点----简单了解
- 利用Django实现webUI展示
- VUE通过id从列表页跳转到相对的详情页
- ArcGIS API for JavaScript经典例子
- python接收html页面上传的文件
热门文章
- ACM学习历程—HDU4717 The Moving Points(模拟退火 || 三分法)
- Mysql常用命令行大全(四)外键及其它
- JAVA操作cassandra数据库
- 【242】◀▶IEW-Unit07
- CF-816A
- JavaWeb_tomcat设置默认应用
- 使用军哥的lnmp配置虚拟主机,需要注意的是要配置hosts文件
- NOIP2015提高组 跳石头 ACM-ICPC2017香港 E(选择/移除+二分答案)
- AndroidStudio常用快捷键
- 洛谷P3608 [USACO17JAN]Balanced Photo平衡的照片