gpt4 book ai didi

android - 如何使用 Kotlin 和可待因结构在改造中拥有多个基本 URL

转载 作者:行者123 更新时间:2023-11-29 22:56:44 33 4
gpt4 key购买 nike

我关注了THIS使用 Kodein 结构/框架的 MVVM 和 Retrofit2 教程。我想知道,使用相同的框架/结构如何在单个应用程序中拥有多个基本 URL。

下面是“MyApi”接口(interface)的代码,它有一个拦截器类作为参数。

companion object {
operator fun invoke(
networkConnectionInterceptor: NetworkConnectionInterceptor
): MyApi {

val okkHttpclient = OkHttpClient.Builder()
.addInterceptor(networkConnectionInterceptor)
.readTimeout(20, TimeUnit.SECONDS)
.build()

return Retrofit.Builder()
.client(okkHttpclient)
.baseUrl("http://my-base-url")
.addConverterFactory(GsonConverterFactory.create())
.build()
.create(MyApi::class.java)
}
}

下面是我如何在 Application 类中初始化 MyApi 接口(interface):

    bind() from singleton { PreferenceProvider(instance()) }
bind() from singleton { NetworkConnectionInterceptor(instance(), instance()) }
bind() from singleton { MyApi(instance()) }

这里MyApi中的instance()显然是NetworkConnectionInterceptor

我在 stackoverflow 和 medium 上看到了很多例子,但我没有得到任何帮助。

最佳答案

我想我找到了解决这个问题的方法。有两种解决方案...

第一个解决方案:

  • 您可以为其他微服务(基本 url)创建一个新接口(interface),并像第一个一样使用它。现在有一些优点和缺点。

优点:

  • 这两个接口(interface)将相互独立。
  • 您可以根据需要在同一 Activity 中使用其中一个界面或同时使用这两个界面。

缺点:

  • 如果弹出另一个微服务,您必须为此再创建一个接口(interface)。 😿
  • 如果您甚至需要 2 个微服务,并且必须在 developmentqa 服务器上运行相同的应用程序,为测试人员和开发人员提供在 qa 和开发服务器之间切换的选项在运行时,您需要有 4 个接口(interface)和 2 个用于production 的额外接口(interface),这意味着 6 个接口(interface),这将变得非常需要管理它。

第二种解决方案:

  • 您可以使用retrofit2 提供的@URL 注解。现在,如果您这样做,将没有 base_url,您必须在一个通用函数中传递 URL 和微服务名称,该函数将根据用户/测试人员所在的服务器(dev/qa 或 prod)返回给您一个完整的 URL。<

优点:

  • 没有额外的接口(interface),只有一个就可以了。
  • 由于具有共同的功能,因此可以轻松管理所有 API 调用。

缺点:

  • 您必须在每个 API 调用中调用 @URL 注释中的公共(public)函数。
  • 我再也看不到了。 😊

关于android - 如何使用 Kotlin 和可待因结构在改造中拥有多个基本 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57373945/

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