是否可以使用 Ktor 和/或 Kotlin 多平台在 Rest API 和 Android 应用程序之间“共享”公开的数​​据?

Posted

技术标签:

【中文标题】是否可以使用 Ktor 和/或 Kotlin 多平台在 Rest API 和 Android 应用程序之间“共享”公开的数​​据?【英文标题】:Is it possible to use Ktor and / or Kotlin multiplatform to "share" the exposed data between a Rest API and an Android Application? 【发布时间】:2019-09-20 07:01:51 【问题描述】:

主要思想是有一种“序列化/反序列化模块”,可以在后端(使用 Ktor)和 android 应用程序之间共享。

我不知道这可以“走多远”,但我想这些路由是“暴露”给前端应用程序使用的(就像 Retrofit 使用带有注释的接口所做的那样)和(反)序列化逻辑也是共享的。

因此,基本上,是否可以在服务器(我猜使用 Ktor)和 Android 应用程序( Java / Kotlin)?

【问题讨论】:

【参考方案1】:

是的。

您可以使用这样的多项目 gradle 构建来构建您的代码:

API 模块:将您的 DTO、序列化/反序列化和路由作为常量放在这里。在这里也为您的 api 定义一个 http 客户端(Ktor 也有一个 http 客户端)。 OpenAPI 也是您在定义 http api 然后生成客户端时可能会考虑的东西。 服务器模块:依赖 API 模块来实现定义 DTO 的路由。如果您在 API 中定义了客户端,请测试您的服务器实现是否满足它。 Android 模块:取决于 API 模块。使用客户端,并模拟它进行测试。

这有点像 SOLID 中的Dependency Inversion Principal。您在单独的模块(API 模块)中定义数据交换的接口。然后,实现(服务器模块)和更高级别的代码(Android 模块)都依赖于它的使用和实现。

【讨论】:

以上是关于是否可以使用 Ktor 和/或 Kotlin 多平台在 Rest API 和 Android 应用程序之间“共享”公开的数​​据?的主要内容,如果未能解决你的问题,请参考以下文章

Swagger-UI 和 Ktor 如何导入 swagger.json 或 .yaml 文件并启动 Swagger-UI?

使用 Ktor Kotlin 处理 FreeMaker 模板

Kotlin Multiplatform - 使用 Ktor 处理响应 http 代码和异常

在 Ktor 中使用 kotlin Reified 进行通用 api 调用

如何使用 Ktor 和 Kotlin 下载带有进度指示器的大文件?

Ktor 1.0 发布:Kotlin Web 框架;GoLand 2018.3 正式版发布!| 更新