如何在 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 中构建嵌套路由?

如何在 Ktor 内部重定向?

如何在 Ktor (Kotlin) 中管道的各个部分之间传递数据

如何在 Ktor 中注册一个 servlet?

如何在 IntelliJ IDEA 中为 Ktor 设置运行配置?

如何在 Ktor 中配置 jackson-modules-java8