2016-07-04 76 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

工作!非常感谢! –