当前位置: 首页 > 知识库问答 >
问题:

如何在koin模块改造中正确添加基本url和api_key头更正?

尹凌龙
2023-03-14

我正在开发新的android应用程序,我想在koin模块改造中添加baseurl和api_key,但我很困惑

结束点:<代码>https://api-aws-eu-qa-1.auto1-test.com/v1/car-types/manufacturer?wa_key=coding-puzzle-client-449cc9d

API密钥:编码-拼图-客户端-449cc9d

基本网址: https://api-aws-eu-qa-1.auto1-test.com/

我想添加base_url并正确api_key在我的modules.kt文件中,以便以后如果您检查我的modules.kt,我可以正确地从服务器获取数据.kt首先我正在调用api_key然后基本url。并设置我的接口,我在哪里调用get方法在接口遵循的方式

interface ApiInterface {

    @GET("v1/car-types/manufacturer?")
    suspend  fun getCarResponse(): Call<CarManufactureResponse>


}

低于CarManifacturerResponse

data class CarManufactureResponse(
    @SerializedName("page")
    val page: Int,
    @SerializedName("pageSize")
    val pageSize: Int,
    @SerializedName("totalPageCount")
    val totalPageCount: Int,
    @SerializedName("mkda")
    val mkda: ManufacturerId
)

下面是ManifacturerId

data class ManufacturerId(
    @SerializedName("020")
    val x020: String,
    @SerializedName("040")
    val x040: String,
    @SerializedName("042")
    val x042: String,
    @SerializedName("043")
    val x043: String,
    @SerializedName("057")
    val x057: String,
    @SerializedName("060")
    val x060: String,
    @SerializedName("095")
    val x095: String,
    @SerializedName("107")
    val x107: String,
    @SerializedName("125")
    val x125: String,
    @SerializedName("130")
    val x130: String,
    @SerializedName("141")
    val x141: String,
    @SerializedName("145")
    val x145: String,
    @SerializedName("150")
    val x150: String,
    @SerializedName("157")
    val x157: String,
    @SerializedName("160")
    val x160: String
)

下面是我的模块。kt koin设置模块,我想在其中传递baseurl和api_key

val viewModels = module {
    //viewModel { CarViewModel(get()) }
}




    val apiModule = module {
        single {
    
            val tokenInterceptor = Interceptor { chain ->
                val request =
                    chain
                        .request()
                        .newBuilder()
                        .addHeader(
                            "API_KEY",Constants.API_KEY
                        )
                        .build()
    
                chain.proceed(request)
            }
    
            val logInterceptor: HttpLoggingInterceptor = HttpLoggingInterceptor().apply {
                this.level = HttpLoggingInterceptor.Level.BODY
            }
    
            val okHttpClient =
                OkHttpClient.Builder()
                    .addInterceptor(tokenInterceptor)
                    .addInterceptor(logInterceptor)
                    .build()
    
            val retrofit =
                Retrofit.Builder()
                    .client(okHttpClient)
                    .baseUrl(Constants.BASE_URL)
                    .addConverterFactory(GsonConverterFactory.create())
                    .addCallAdapterFactory(CoroutineCallAdapterFactory())
                    .build()
    
            retrofit.create(ApiInterface::class.java)
        }
    }

下面Constants.kt

object Constants {

const val API_KEY = "wa_key=coding-puzzle-client-449cc9d"
const val BASE_URL = "https://api-aws-eu-qa-1.auto1-test.com/"

}

我如何在koin模块中正确地传递baseurl和apiKey,以便我可以正确地实现改进逻辑

共有1个答案

左丘嘉木
2023-03-14

使用下面的代码获取您想要的url:

@GET("v1/car-types/manufacturer?{apiKey}")
suspend  fun getCarResponse(  @Path("apiKey") type: String,@Query("page") page:String,@Query("pageSize") pageSize:String): Call<CarManufactureResponse>
 类似资料:
  • 目前,我在改装方面面临一些问题。对于第二个请求,我提供给ReformInstance的URL正在更改。以下是代码: 以下是针对不同API请求的接口方法: UrlEndPoints.kt 对于第一个请求(loginUserByFacebook),我通过调试响应获得的URL是: http://test.sample.com/req/v1/user/auth/facebook 这很好,工作也很好。但是对

  • 我们的团队决定采用改型2.0,我正在做一些初步的研究。我是这个图书馆的新手。 我想知道如何使用在我们的Android应用程序中通过改装2.0添加自定义标题。有很多教程介绍如何使用在翻新版1.X中添加标头,但由于API在最新版本中发生了很大变化,我不知道如何在新版本中适应这些方法。此外,改装尚未更新其新文档。 例如,在以下代码中,我应该如何实现类来添加额外的头?此外,未记录的对象究竟是什么?何时调用

  • 注意:我知道有很多关于这个主题的帖子,我已经审阅了相当多的没有成功(请看我在这篇文章底部的参考资料)。 我正试图使用Visual Studio代码在TypeScript中运行一个非常简单的测试,其中我在一个文件中声明一个类并将其导入到另一个文件中。但是,我仍然遇到一个问题,我正在导入的文件无法识别我从另一个文件导出的类的方法。 此时我收到的确切错误消息是: [ts]属性“Get FirstName

  • 问题内容: 如何设置模块导入,以便每个模块都可以访问其他所有模块的对象? 我有一个中等大小的Python应用程序,在各个子目录中都有模块文件。我使用创建了将这些子目录附加到模块并导入一组模块的模块。使用该限定条件引用模块对象。然后,我使用将该模块导入其他模块。现在的代码草率,其中有几处通常是重复的。 首先,应用程序失败,因为未分配某些模块引用。单元测试时,会运行相同的代码。 其次,我担心递归模块导

  • 我正在尝试调用一个API,它要求我传入一个API密钥。 我使用HttpURLConnection的服务调用工作正常。 然而,我不确定这是如何工作与改造,因为我的调用进入失败的所有时间。这是我在同一个服务调用中使用的代码 我用这个来称呼它 所有这些调用都将进入改型中的OnFailure方法。如果不使用HeaderParameters发送它,它将以403获得成功,因为我显然需要在某个地方传递api键,