【问题标题】:How to list configured routes in Ktor如何在 Ktor 中列出配置的路由
【发布时间】:2021-12-12 19:23:15
【问题描述】:

我正在建立一个项目,其中包含多个包含不同版本 api 的模块。

为了验证正确的路由配置,我想将配置的路由打印到应用程序日志中,就像在 Spring 框架中完成的那样。

有可能吗?我应该使用什么?

【问题讨论】:

  • 您的问题非常广泛,可以通过一些简单的搜索来回答。请解释为什么公开可用的资源无法为您提供帮助。
  • @tisaconundrum 好吧,如果我们从哲学上考虑,这个库的源代码是公开的,我只需阅读源代码就可以解决我的问题。显然,我花时间在谷歌上搜索并寻找没有结果的答案。

标签: ktor


【解决方案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) }
}

请注意以上代码必须放在路由配置之后。

【讨论】:

  • 这是完美的。非常感谢!
猜你喜欢
  • 2022-01-16
  • 1970-01-01
  • 2018-08-01
  • 2021-03-01
  • 2022-01-10
  • 1970-01-01
  • 1970-01-01
  • 2018-02-28
  • 1970-01-01
相关资源
最近更新 更多