2011-08-01 34 views

回答

2

您可以在app.routes对象内部进行挖掘,该对象是Router的实例。最简单的方法可能是在交互式侦听器中加载您的应用,然后查看app.routes中包含的各种对象。

如果您希望更具方法性,您可以阅读路由器和路由对象的源代码,例如https://github.com/visionmedia/express/blob/master/lib/router/route.js

+1

这正是我在输入这个答案时所做的。我已经单独发布了它,但OP应该做你未来的建议。 :) – Hank

1
for(var type in app.routes.routes) { 
    console.log(type+":"); 
    for(var rts in app.routes.routes[type]) { 
    console.log(app.routes.routes[type][rts]); 
    } 
} 
2

实际上,有这样做的更好的办法,TJ Holowaychuck(快递的作者)做了一个gist它:

app.routes.all().forEach(function(route){ 
    console.log(' \033[90m%s \033[36m%s\033[0m', route.method.toUpperCase(), route.path); 
}); 
+1

这似乎不工作了,至少不适合我。使用快递3.1.2。 – Morten

0

的路由对象有动词性质。你可以迭代它们并构建所有路由,方法等的列表。

我创建了一个创建自描述rest-api的Gist。我相信它可以得到改进,但如果你想要的话,你可以看到我如何遍历路由对象。

https://gist.github.com/morkeleb/5705647

的反馈是对主旨的欢迎。