【问题标题】:How can i get a list of Koa server url routes如何获取 Koa 服务器 url 路由列表
【发布时间】:2016-11-06 10:46:35
【问题描述】:

我正在使用 koajs 开发一个模拟服务器,我想发布一个列出已开发 API 的服务。

我使用 koa-router 进行 mouting 服务。

我想要一些像这样的想法:

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

console.log(app.listRoutes());

【问题讨论】:

  • 不太清楚你的问题是什么。
  • 对于app,它们都只是中间件功能,无论它们是路由器中间件(使用koa-router)还是其他一些中间件(错误处理程序)只有你知道。尽管如此,列出所有app 正在使用的中间件可能没有记录。在快递中可以做到like this,但快递有自己的路由器。所以,这不是一个答案,但我希望它在某种程度上有所帮助。我会检查app 以获取所有中间件,看看是否有任何一个具有明显特征的中间件是通过 koa-router 生成的中间件之一

标签: node.js koa koa-router


【解决方案1】:

虽然我猜它不是官方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));

【讨论】:

  • 我正在使用这个解决方案,效果很好,但是我在列表中得到了一些 '(.*)' 值,这些是什么意思?
猜你喜欢
  • 1970-01-01
  • 2017-09-01
  • 1970-01-01
  • 2017-01-22
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-16
相关资源
最近更新 更多