ktor - 如何连接到 ktor 服务器上的外部 api
问题描述
我有一个 ktor 服务器,它向我的 android 客户端公开一个 API。它有自己的数据库、一些注册结构和所有标准的东西。但是现在,我的数据库的一部分正在填充来自 3rd 方数据库的数据,我只能通过它自己的 API 访问这些数据。这意味着我的服务器本身就是一个客户端。我知道这可能不是最好的结构,但现在就是这样。所以我认为我的服务器需要一个 HTTPClient。为此,我需要使用一个引擎,但我应该使用与我用于服务器的引擎相同的引擎吗?如何在我的 DI Koin 中设置它,以便我的服务可以访问 HTTPClient(工厂或单一)现在我像这样设置服务器部分:
fun main(args: Array<String>): Unit = io.ktor.server.netty.EngineMain.main(args)
@Suppress("unused") // Referenced in application.conf
@kotlin.jvm.JvmOverloads
fun Application.module(testing: Boolean = false) {
install(ContentNegotiation) {
serialization()
}
install(Koin) {
modules(
KoinModules.exposedModule,
KoinModules.repositoryModule
)
}
val userRepository by inject<UserRepository>()
routing {
...
应用程序.conf
ktor {
deployment {
port = 8080
port = ${?PORT}
}
application {
modules = [ com.kvw.letsgo.server.ApplicationKt.module ]
}
}
我应该更改我的 main()、丢失 application.conf 并手动编写代码以便使用相同的引擎吗?
解决方案
推荐阅读
- laravel - Laravel + Vuetify 错误:渲染错误:this.items.slice 不是函数”& 无效道具:预期数组,得到对象
- javascript - 点错误:输入必须全部为 1 或 2 级,但得到 2 和 0 级
- javascript - jsPDF:使用自定义字体对齐文本
- c# - 向左使用 TabStripPlacement 时 Dragablz 不可滚动
- forms - 如果子表单中的数据为空,有没有办法删除主表单数据?
- python - 在 Python 中将数据发送到生成器
- java - 用于 javafx (jdk8u201) 的 cloudbuild.yaml 以及其他依赖项
- javascript - 单击按钮或链接后,如何在两个页面之间传递元素的属性值?
- rust - 如何定义泛型类型转换以将任何错误转换为标准错误类型?
- c - 如何使用 valgrind gdb 或任何其他选项检测未释放的分配?