gpt4 book ai didi

kotlin - 如何在 ktor 中创建可重用的拦截器?

转载 作者:行者123 更新时间:2023-12-02 12:18:01 26 4
gpt4 key购买 nike

在 ktor 中,进行自定义权限检查的方法似乎是通过拦截器,如下所示:

route("/portal") {
route("articles") { … }
route("admin") {


intercept(ApplicationCallPipeline.Features) { … } // verify admin privileges
route("article/{id}") { … } // manage article with {id}
route("profile/{id}") { … } // manage profile with {id}
}
}

提取拦截器逻辑以供代码库中其他地方的其他路由重用的最佳方法是什么?

最佳答案

抱歉迟到了。在我的代码中,我制作了路线,有些路线有一个拦截器来测量和记录执行时间,而其他路线则没有。因此,我按照文档中的示例( https://ktor.io/advanced/pipeline/route.html# )创建了一个函数来执行此操作,然后我在需要测量的路由块周围使用了此函数。

请在下面找到我的代码

install(Routing) {
val konfig = HoconKonfigAdapter()
val contextPath = konfig.get("ktor.deployment.context-path")
route("$contextPath/api/v1") {
val registry = feature(Metrics).registry

healthEndPoints()
metricsEndPoints(registry)
routeWithMeasureTime {
catalogSiEndPoints()
reunionCatalogEditoEndPoints()
telesurveillanceCatalogEditoEndPoints()
catalogLegacyEndPoints()
}
}
}

将拦截和测量块 routeWithMeasureTime 内的所有路线。另一个,没有。

希望对这么晚的事件有所帮助。

关于kotlin - 如何在 ktor 中创建可重用的拦截器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55747196/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com