我想用它的方法类型获取所有.js文件的动作/路线。 基本上我想创建一个函数,返回我所有的动作和方法。
router.get('/this/is/action', function (req, res, next) {
// This action is in login.js
}
router.post('/another/action1', function (req, res, next) {
// This action is in signup.js
}
所以,在这种情况下,我的函数必须返回响应,如下所示。
{
"data":[
{
"url":"/this/is/action",
"method":"get"
}
{
"url":"/another/action1",
"method":"post"
}
]
}
答案 0 :(得分:0)
如果您使用快递,则可以使用由dougwilson快递创建者创建的以下代码段。
function print (path, layer) {
if (layer.route) {
layer.route.stack.forEach(print.bind(null, path.concat(split(layer.route.path))))
} else if (layer.name === 'router' && layer.handle.stack) {
layer.handle.stack.forEach(print.bind(null, path.concat(split(layer.regexp))))
} else if (layer.method) {
console.log('%s /%s',
layer.method.toUpperCase(),
path.concat(split(layer.regexp)).filter(Boolean).join('/'))
}
}
function split (thing) {
if (typeof thing === 'string') {
return thing.split('/')
} else if (thing.fast_slash) {
return ''
} else {
var match = thing.toString()
.replace('\\/?', '')
.replace('(?=\\/|$)', '$')
.match(/^\/\^((?:\\[.*+?^${}()|[\]\\\/]|[^.*+?^${}()|[\]\\\/])*)\$\//)
return match
? match[1].replace(/\\(.)/g, '$1').split('/')
: '<complex:' + thing.toString() + '>'
}
}
app._router.stack.forEach(print.bind(null, []))