是否可以使用 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 调用