2011-08-01 63 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

的反饋是對主旨的歡迎。