2016-07-04 7 views
2

私はkoajsを使って模擬サーバを開発しています。開発したAPIをリストしたサービスを公開したいと思います。KoaサーバのURLルートのリストを取得するにはどうすればいいですか

私は、moutingサービスのためにkoa-routerを使用します。

と私は同じようsomethinkをしたいと思います:business_routerを想定し、

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'] 

をお使いの場合:私はそれが公式のkoa-router APIの一部ではないと思いますが、あなたは以下のように行うことができます

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

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

これはあまり明確ではありませんあなたの質問はです。 –

+0

'app'には、ルータミドルウェア(koa-routerを使用しているかどうか)やその他のミドルウェア(エラーハンドラ)のいずれかが、あなただけが知っているミドルウェア機能です。それでも、すべてのミドルウェアをリストアップしている 'app'はおそらく文書化されていません。明示的にそれは[このような](http://stackoverflow.com/questions/14934452/how-to-get-all-registered-routes-in-express)でも行えますが、expressには独自のルータがあります。ですから、これは答えではありませんが、何らかの形で役立つことを願っています。私はすべてのミドルウェアを取得し、何かがコーアルータ経由で生成されたものの一つであることに特徴があるかどうかを確認するために 'app'を調べるだろう – laggingreflex

答えて

8

koa-routerのインスタンスです:

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

Worked!どうもありがとう! –

関連する問題