Ktor框架是否提供了在请求中访问路由的路径字符串的方法?
例如,如果我设置了如下路由:
routing {
get("/user/{user_id}") {
// possible to get the string "/user/{user_id}" here?
val path = someFunction()
assert(path == "/user/{user_id}")
}
}
为了说明问题,我正在寻找一种方法来访问未处理的路径字符串,即本例中的"/user/{user_id}"
(通过call.request.path()
访问路径会得到{user_id}
填充后的路径,例如"/user/123"
)。
当然,我可以将路径赋给一个变量,并将其传递给get
,然后在函数体中使用它,但我想知道是否有一种方法可以不这样做就获得路由的路径。
5条答案
按热度按时间ajsxfq5m1#
我认为这是不可能的。你可以写这样一个类/对象
并从路由模块中引用该字段:
通过这样做,你只需要从给定的单例中引用那个字符串,也不需要
object
Package 器,但是我认为它看起来很整洁,你可以通过它们的模块名来分组路径uajslkp62#
我是这样解决的
为了构造我的扩展函数,我把它们放在其他文件中,如下所示
w3nuxt5m3#
xvw2m8pv4#
我找到了解决这个问题的办法
试试这个代码,它简单而健壮
ma8fv8wu5#
因此,到目前为止,所有的解决方案都忽略了提取路径变量的最明显(依我拙见--正确)的方法:
**call.parameters[“user_id”]将返回类型为String?**的值
您可以有多个路径变量,并通过此方法将它们取出。