如何在 Ktor 中列出配置的路由
Posted
技术标签:
【中文标题】如何在 Ktor 中列出配置的路由【英文标题】:How to list configured routes in Ktor 【发布时间】:2021-12-12 19:23:15 【问题描述】:我正在建立一个项目,其中包含多个包含不同版本 api 的模块。
为了验证正确的路由配置,我想将配置的路由打印到应用程序日志中,就像在 Spring 框架中完成的那样。
有可能吗?我应该使用什么?
【问题讨论】:
您的问题非常广泛,可以通过一些简单的搜索来回答。请解释为什么公开可用的资源无法为您提供帮助。 @tisaconundrum 好吧,如果我们从哲学上考虑,这个库的源代码是公开的,我只需阅读源代码就可以解决我的问题。显然,我花时间在谷歌上搜索并寻找没有结果的答案。 【参考方案1】:您可以通过递归遍历从根开始一直向下遍历树的路由并使用 HTTP 方法选择器仅过滤路由来实现。此解决方案描述为here。
fun Application.module()
// routing configuration goes here
val root = feature(Routing)
val allRoutes = allRoutes(root)
val allRoutesWithMethod = allRoutes.filter it.selector is HttpMethodRouteSelector
allRoutesWithMethod.forEach
println("route: $it")
fun allRoutes(root: Route): List<Route>
return listOf(root) + root.children.flatMap allRoutes(it)
请注意以上代码必须放在路由配置之后。
【讨论】:
这是完美的。非常感谢!以上是关于如何在 Ktor 中列出配置的路由的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Ktor (Kotlin) 中管道的各个部分之间传递数据