首页 > 解决方案 > 如何连接到 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 并手动编写代码以便使用相同的引擎吗?

标签: ktorkoinktor-client

解决方案


推荐阅读