我们如何在 kotlin mutlplatform 中的 ios 和 android 两个平台中处理 api 响应?

How can we handle api response in both platform in ios and android in kotlin mutlplatform?

嘿,我是 Kotlin Multiplatform 移动世界的新手。我有 android 领域的开发经验。我正在尝试连接 Android 应用程序Ios 应用程序。我搜索并看到 Ktor is the way to fetch data from server. In android we use Kotlin Sealed Classes for Handling API Responses example in your application and in ios side team use Understanding Swift closures and asynchronous request functions 与这些类似。我有点困惑,我怎么能在公共模块中使用这种方式来使用这两个平台,因为这两个平台都有 Interceptor 等等。我需要从头开始编写所有内容吗?或者我们有什么办法可以使用现有的方式。我的两个平台应用程序都是一个巨大的项目。我不会替换代码。我想使用 Ktor 通过 KMM 开始新的 api 调用。任何建议或项目都会对我有所帮助。谢谢

如果您想将旧 Android Code 用于 Kotlin-Multiplatofrm Project,您需要执行一些步骤

First Step : 你应该将你的代码分成业务层和表示层你可以通过阅读干净的架构来了解它 Android

Second Step : 我们将业务层放入共享模块然后我们将表示层放入ANDROID APP

Third Step : 你应该用 Ktor 代码替换 Retrofit 代码

Fourth Step : 你应该用 SqlDlight 代码替换房间代码

fifth Step : 您应该使用 Compose 在表示层中编写您的视图而不是 Xml

然后应用程序将准备好使用他的业务逻辑进入ios

sixth Step : 然后你可以把你的 swift 代码写进 IOS APP

你可以看看这段代码,这不是完整的代码,但它会让你明白你可以使用 my Kmm Repo at Github

注:

Presentation layer 包含 view 、 viewmodel 和任何依赖于平台的工具,如 workmanger

business layer 包含网络和缓存代码,如 KTOR 、 SQLDELIGHT 和任何可能在 Android 和 Ios

之间共享的逻辑

您无需从头开始编写任何内容。基本上你需要一个单独的网络层,它将在共享模块中。它将主要由您的 request/response 模型和 api 通话内容组成。在这里,您只能定义一个密封的 class,如果 api 在您的 api 回调中成功或失败,它将为您提供,并基于此您可以处理您的响应。 可以参考这篇amazing sample for your usecase. You can also refer to this blog深入了解