我有一个 Rails 应用程序,它有 2 个“客户端”——一个 iOS 应用程序读取/写入 JSON,以及一个读取 HTML 的 Web 浏览器。
现在,如果我说“我想要不同的浏览器/客户端有不同的输出”,我们可以使用不同的 ERB 文件并基于
User-Agent
或类似的进行渲染。
以这种方式,Rails 在 Web 世界中被想象出来——我输入“cap deploy”,我的所有“实例”都会升级到最新版本(保存活动会话 AJAX 调用)。
但是,作为一名 iOS 开发人员,我非常习惯于代码中的
if
块来处理不同的数据版本和客户端应用程序版本。 这很痛苦(但必须)。
我很想能够说“我会神奇地想到 1.0 版本中的完美数据结构”,但我们可能都知道这不是真的——随着时间的推移,我会想添加和弃用属性甚至模型。
我不想将所有版本控制逻辑与我的普通 HTML 混合在一起(可以按照上面的方式优雅地升级),所以我考虑过:
我正在尝试解决已解决的问题吗? 在开展这个项目时我应该了解什么资源或指导思想吗?
我建议您创建 2 个应用程序,一个用于 Web 应用程序,一个用于 API。
您可以拥有一个外部库,其中包含这两个应用程序中使用的所有模型、测试和业务逻辑。
如果需要,您可以将 api 锁定到库的某个版本。 您可以创建多个版本的 API,而不影响旧版本。 如果需要,您可以在库级别实现缓存,它将自动影响所有应用程序。
使用此模型,您还可以创建特定需求,例如,您可能希望 api 的 url 比真正的 Web 应用程序更短,因为您不关心 API 中的 SEO。
你觉得怎么样?
编辑:
这就是我的想法,图书馆在中间。