访问 Ktor 请求中的路由路径字符串

Dav*_*lis 5 kotlin ktor

Ktor 框架是否提供了一种在请求中访问路由路径字符串的方法?

例如,如果我设置一条路线,例如:

routing {
    get("/user/{user_id}") {
        // possible to get the string "/user/{user_id}" here?
        val path = someFunction()
        assert(path == "/user/{user_id}")
    } 
}
Run Code Online (Sandbox Code Playgroud)

为了澄清,我正在寻找一种访问未处理的路径字符串的方法,即"/user/{user_id}"在这种情况下(通过访问路径为我提供了填充后call.request.path()的路径,例如)。{user_id}"/user/123"

我当然可以将路径分配给变量并将其传递给两者get并在函数体内使用它,但想知道是否有一种方法可以在不这样做的情况下获取路线的路径。

Som*_*boy 2

我认为这是不可能的。你可以做的是编写这样一个类/对象

object UserRoutes {

    const val userDetails = "/users/{user_id}"
    ...

}
Run Code Online (Sandbox Code Playgroud)

并从路由模块引用该字段:

import package.UserRoutes

get(UserRoutes.userDetails) {...}
Run Code Online (Sandbox Code Playgroud)

通过这样做,您只需要从给定的单例中引用该字符串。也不需要包装器,但我认为你可以模块名称object对路径进行分组,这看起来很不错