android - 是否可以使用 Ktor 和/或 Kotlin 多平台在 Rest API 和 Android 应用程序之间“共享”公开的数据?
问题描述
主要思想是拥有一种可以在后端(使用 Ktor)和 Android 应用程序之间共享的“序列化/反序列化模块”。
我不知道这能走多远,但我想这些路由是“暴露”的,供前端应用程序使用(就像 Retrofit 使用带有注释的接口一样)并且(反)序列化逻辑是共享的也。
所以基本上,是否可以在服务器(我猜使用 Ktor)和 Android 应用程序(Java / Kotlin ) ?
解决方案
是的。
您可以使用这样的多项目 gradle 构建来构建您的代码:
- API 模块:将您的 DTO、序列化/反序列化和路由作为常量放在这里。在这里也为您的 api 定义一个 http 客户端(Ktor 也有一个 http 客户端)。OpenAPI 也是您在定义 http api 然后只是生成客户端时可能会考虑的东西。
- 服务器模块:依赖 API 模块来实现定义了 DTO 的路由。如果您在 API 中定义了客户端,请测试您的服务器实现是否满足它。
- Android 模块:依赖于 API 模块。使用客户端,并模拟它进行测试。
这有点像Dependency Inversion Principal
来自 SOLID 的。您在单独的模块(API 模块)中定义数据交换的接口。然后,实现(服务器模块)和更高级别的代码(Android 模块)都依赖于它的使用和实现。
推荐阅读
- python - 如何通过 EXIF / JFIF 签名检测 JPEG 文件?
- python - 为什么 numpy.allclose 使用非对称比较?
- web-applications - Visual Studio 2017 更新后预览转换不再适用于 Web.Config
- java - 如何在没有 Spring Boot 的情况下使用 JPA 存储库
- powershell - 删除双键ini文件powershell
- r - 如何使用ggplot2在分组条形图中显示两个条形的标签?
- spring-security-oauth2 - Spring Security OAuth2 - 多个 ResourceServer 配置
- sql - 在 SQL 中分配新的局部变量要求
- c++ - 为什么这个构造函数没有给出不完整的类型错误?
- python - Django模板标签将GET参数从当前请求添加到Python3+Django2中的url