2016-07-04 80 views
2

我正在開發一個使用koajs的模擬服務器,並且我想發佈一個列出開發API的服務。我如何獲得Koa服務器url路由列表

我使用koa路由器進行綁定服務。

,我想somethink想:

var business_router = require('./controllers/router'); 
app.use(business_router.routes()); 
app.use(business_router.allowedMethods()); 

console.log(app.listRoutes()); 
+0

這不是很清楚wha你的問題是。 –

+0

對於'app'來說,它們都只是中間件功能,不管它們是路由器中間件(使用koa-router)還是其他一些中間件(錯誤處理程序),只有你才知道。儘管如此,列出所有正在使用的中間件「應用程序」可能未被記錄。在表達它可以做[像這樣](http://stackoverflow.com/questions/14934452/how-to-get-all-registered-routes-in-express),但表達有它自己的路由器。所以,這不是一個答案,但我希望它在某種程度上有所幫助。我會檢查'應用程序'得到所有的中間件,看看是否有任何明顯的功能是通過koa路由器產生的 – laggingreflex

回答

8

雖然我想這是不是官方koa-router API的一部分,你可以做以下幾點:

var app = require('koa')(); 
var router = require('koa-router')(); 

router.get('/bar', function*() { this.body = 'Hi'; }}); 
router.get('/bar/foo', function*() { this.body = 'Hi'; }}); 
router.get('/foo', function*() { this.body = 'Hi'; }}); 
router.get('/bar/baz', function*() { this.body = 'Hi'; }}); 

app 
    .use(router.routes()) 
    .use(router.allowedMethods()); 

console.log(router.stack.map(i => i.path)); 
// ['/bar', '/bar/foo', '/foo', '/bar/baz'] 

在你的情況下,假設business_routerkoa-router的一個實例:

console.log(business_router.stack.map(i => i.path)); 
+0

工作!非常感謝! –