gpt4 book ai didi

kotlin - 如何让请求绑定(bind)的数据在 Ktor 中全局可用?

转载 作者:行者123 更新时间:2023-12-05 07:24:32 24 4
gpt4 key购买 nike

我正在 Ktor 中构建微服务。当我们在应用程序模块中工作时,Ktor 提供对包含授权数据的 call 对象的访问。

我的问题是我需要从服务级类访问 call 对象。在 Spring 中,您可以通过访问可通过 ThreadLocal 全局访问的 SecurityContext 来执行此操作。 Ktor 是协程驱动的,没有这个选项。

我是否真的需要通过我的服务层方法传递 call 对象,或者 Ktor 中是否有一种方法可以拥有某种您可以从任何地方访问的“调用上下文”对象?

最佳答案

我认为目前没有内置官方机会。

我写了一个 Ktor-Feature,它实现了那个行为。答案很难用几句话来描述。

如果您有兴趣,请查看代码和示例。还提供了安装指南。

=> https://github.com/MaaxGr/ktor-globalcalldata


这是一个简短的片段,我的 dsl 是什么样子的:

直接或间接从路由调用挂起函数test():

routing {
get("/test") {
test()
call.respond("OK")
}
}

通过callData().call访问调用对象

suspend fun test() {
val url = callData().call.request.uri
println(url) // prints "/test"
}

该库还允许添加可以绑定(bind)到当前协程/调用的自定义属性。

关于kotlin - 如何让请求绑定(bind)的数据在 Ktor 中全局可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55373266/

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