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

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;
};

如何使用

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

转载于:https://www.cnblogs.com/htoooth/p/8321267.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/281349.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用vue组件搭建网页应用

使用vue组件搭建网页应用搭建开发环境开发组件搭建开发环境 搭建一个 vue 项目最快的方式就是使用 vue cli 脚手架进行初始化,包含了所有完整的依赖及开发配置。 首先全局安装 vue cli,打开 cmd 命令提示符 或者 power shell,输入以下命令&…

重新整理 .net core 实践篇 —linux上排查问题实用工具 [外篇]

前言介绍下面几个工具:Lldbcreatedumpdotnet-dumpdotnet-gcdumpdotnet-symbolProcdump该文的前置篇为:https://www.cnblogs.com/aoximin/p/16839812.html献给初学者,这篇就只介绍下看下日志和lldb,毕竟东西太多了。正文我以官网的例子作为演示&#xff1…

Office 365离线安装

Office 365除了可以在线安装外,还可以进行离线安装,但激活还是需要连接互联网的哟首先下载Office部署工具https://www.microsoft.com/en-us/download/details.aspx?id49117 下载文件后,运行自解压缩可执行文件,其中包含 Office 部…

reduceByKey和groupByKey区别与用法

2019独角兽企业重金招聘Python工程师标准>>> 在Spar看中,我们知道一切的操作都是基于RDD的。在使用中,RDD有一种非常特殊也是非常实用的format——pair RDD,即RDD的每一行是(key, value)的格式。这种格式很…

python自动化测试-D6-学习笔记之一(常用模块补充datetime模块)

# datetime 模块import datetimeprint(datetime.datetime.today()) #当前日期,到秒 打印结果:2018-01-21 10:23:46.034410print(datetime.datetime.now()) # 当前日期,到秒 打印结果:2018-01-21 10:23:46.034410print(datetime.d…

Vue如何在data中正确引入图片路径

方法一&#xff1a;将图片资源放入项目 /static 目录下&#xff0c;使用绝对或相对路径引用即可 // 文件结构 |-- src | |-- components | | |-- banner.vue |-- static | |-- images | | |-- pic.jpg<template><div id"banner"><img :s…

软件工程的第一性原理丨SmartIDE

作者&#xff1a;徐磊原文地址&#xff1a;https://smartide.cn/zh/blog/2022-1022-software-engineering/徐磊英捷创软科技&#xff08;北京&#xff09;有限公司创始⼈/⾸席架构师 / CEO / SmartIDE开源项⽬创始⼈。微软最有价值专家MVP&#xff0c;微软区域技术总监&#xf…

排序算法之快速排序详解

一、算法介绍 快速排序&#xff1a;快速排序的基本思想是通过一次排序将等待的记录分成两个独立的部分&#xff0c;其中一部分记录的关键字小于另一部分的关键字。C部分的快速排序一直持续到整个序列被排序。 任取一个元素 (如第一个) 为中心提出所有小于它的元素&#xff0c;并…

openstack 中国联盟公开课參会总结

主流趋势 1. openstack defcore 互操作性认证。打通不同的openstack 厂商之间的连接2. 首批OpenStack管理员认证(COA)将于2016年进行3. 混合云应用广泛 Cloud Broker,cascading openstack 云连接器4. DevOps5. 虚拟桌面6. Storage 方面&#xff0c;Ceph和Glusterfs 7. Network…

bzoj1088[SCOI2005]扫雷Mine

1088: [SCOI2005]扫雷Mine Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4284 Solved: 2552[Submit][Status][Discuss]Description 相信大家都玩过扫雷的游戏。那是在一个n*m的矩阵里面有一些雷&#xff0c;要你根据一些信息找出雷来。万圣节到了&#xff0c;“余”人国流…

Re:从零开始的Vue项目搭建

Re&#xff1a;从零开始的Vue项目搭建初始的终结与结束的开始Nodejs项目的简单测试从零开始webpack开发模式webpack编译打包后记初始的终结与结束的开始 最开始接触vue项目搭建是从vue-cli开始&#xff0c;模板式操作&#xff0c;一键搞定&#xff0c;几乎可以无缝进入代码开发…

在数据库插入带小数点数据的问题

想在mysql插入以下数据设计表的时候没有注意,之前都用的int,这次换成了double,但是插入第一条3.50的时候数据库显示为:查了之后知道是设计表的时候没有注意小数点的设置转载于:https://juejin.im/post/5c0f61bb6fb9a049ea38cbe9

oracle 11g 创建 job 20

15-10-19 23:48:04分类&#xff1a; Oracle--创建一次执行的匿名块任务&#xff0c;成功调用一次后job消失BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name > my_new_job2, job_type > PLSQL_BLOCK, job_action &g…

Jzoj5317 Func

f(1)1 f(2x)f(x) f(2x1)f(x)f(x1) 给出n<10^6&#xff0c;求:所有的i满足f(i)n 第一道类欧算法 我们考虑一个性质 f(2x1)f(x)f(x1)f(2x)f(2x2) 所以&#xff0c;显然有f(2x1)>f(2x) f(2x1)>f(2x2) 那么现在我们知道了f(2x1),自然考虑枚举一个f(2x) 可以按照以下形式…

C# WPF 用代码画一幅图(*精品*)

概述有时候我们的程序界面中需要显示一些简单的示意图&#xff0c;一般我们有原图的话直接嵌入我们程序就可以&#xff0c;但有时候我们没有原图&#xff0c;这时候我们不妨用代码自己画出来.今天小编要给大家展示的是这样一副图片&#xff1a;接下来&#xff0c;我就用代码纯手…

矿难让显卡压了那么多货咋办?NV如是说

2019独角兽企业重金招聘Python工程师标准>>> 在苏州 GTC 开幕的几天前&#xff0c;英伟达刚刚遭遇了一次股价的腰斩。 近来加密货币的热度渐低&#xff0c;受到挖矿热潮照顾许多的英伟达「矿机」销量受到打击&#xff0c;甚至出现了严重的库存危机&#xff0c;加上近…

花式看超级碗 人工智能、大数据在碗里

“超级碗”可不是一个大碗!!!超级碗(Super Bowl)是美国国家美式足球联盟(也称为国家橄榄球联盟)的年度冠军赛&#xff0c;胜者被称为“世界冠军”。超级碗一般在每年1月最后一个或2月第一个星期天举行&#xff0c;那一天称为超级碗星期天(Super Bowl Sunday)。超级碗是比赛的名…

Git分支操作与远程仓库的使用

Git分支操作本地仓库创建分支合并分支删除分支远程仓库push 推送远程分支pull 拉取远程分支fetch 更新远程分支本地分支与远程分支的跟踪关系本地仓库 由于Git的分布式特性&#xff0c;所以没有绝对的本地和远程概念&#xff0c;一切都是相对的。对于分支的操作&#xff0c;个…

SimMechanics/Second Generation倒立摆模型建立及初步仿真学习

笔者最近捣鼓Simulink&#xff0c;发现MATLAB的仿真模块真的十分强大&#xff0c;以前只是在命令窗口敲点代码&#xff0c;直到不小心敲入simulink&#xff0c;就一发不可收拾。话说simulink的模块化建模确实方便&#xff0c;只要拖拽框框然后双击设置属性就可以慢慢堆建自己的…

10 行代码提取复杂 Excel 数据

把 Excel 文件导入关系数据库是数据分析业务中经常要做的事情&#xff0c;但许多 Excel 文件的格式并不规整&#xff0c;需要事先将其中的数据结构化后再用 SQL 语句写入数据库。而一般情况下&#xff0c;结构化的工作量会比较大&#xff0c;而且很难通用&#xff0c;每次都要针…