如何在Hono框架中获取所有已注册的路由列表?
获取Hono已注册路由列表的方法
Hono官方文档确实没有提供类似Hapi table()或Fastify路由打印插件的公开API,但可以通过访问Hono实例的内部属性提取路由信息,以下是具体实现方式:
1. 直接读取内部路由存储
Hono的路由信息存在实例的router属性下,可直接访问获取:
import { Hono } from 'hono' const app = new Hono() // 注册测试路由 app.get('/hello', (c) => c.text('Hello')) app.post('/api/users', (c) => c.json({ ok: true })) app.put('/api/users/:id', (c) => c.json({ id: c.req.param('id') })) // 获取并打印路由列表 const routes = app.router.routes routes.forEach(route => { console.log(`${route.method} ${route.path}`) })
2. 封装成工具函数复用
如果需要频繁使用,可封装成工具函数简化调用:
function getHonoRoutes(app) { return app.router.routes.map(route => ({ method: route.method, path: route.path, handlerName: route.handler.name || '匿名处理器' })) } // 使用示例 const allRoutes = getHonoRoutes(app) console.table(allRoutes)
注意事项
- 这是非公开内部API,Hono的内部实现可能随版本迭代变更,使用时需注意版本兼容性。
- 若需要更稳定的方案,可关注Hono官方仓库,提交功能请求推动官方推出正式的路由列表API。
内容的提问来源于stack exchange,提问作者Harshal Patil
相关产品推荐
相关产品推荐

