2012-03-26 46 views
3

我有一个Rails应用程序有2个“客户端” - 一个iOS应用程序读/写JSON,以及读取HTML的Web浏览器。什么是Rails处理不同控制器客户端(Web,iOS API)的方式?

现在,如果我说“我想为不同的浏览器/客户端输出不同的输出”,我们可以使用不同的ERB文件并基于User-Agent或类似的渲染。

通过这种方式,Rails在网络世界中被想象出来 - 我在那里键入“cap deploy”,并将我所有的“实例”升级到最新版本(保存活动会话AJAX调用)。

但是,作为iOS开发者,我非常习惯于在代码中使用if块来处理不同数据版本&客户端应用程序版本。这是痛苦的(但需要)。

我希望能够说“我会奇迹般地想到1.0版中的完美数据结构”,但我们可能都知道这不是真的 - 我想添加&弃用属性,甚至模型作为时间流逝。

我不想跟一般的HTML(这能优雅地升级,按照上述)混合所有版本的逻辑,所以我想过:

  • 有一个单独的控制器或正义行动从iOS的
  • 我的API调用写的是对待HTML/Web版作为一个层上的API版本

顶部的“转发”我是试图解决一个解决的问题?在进行这个项目时,我是否应该了解任何资源或指导理念?

回答

5

我建议你创建2个应用程序,一个用于webapp,一个用于API。

您可以在外部库中使用这两个应用程序中使用的所有模型,测试和业务逻辑。

如果需要,您可以将api锁定到特定版本的库。 您可以在不影响旧版本的情况下创建多个版本的API。 如果需要,您可以在库级别实施缓存,并且它会自动影响所有应用程序。

有了这个模型,你也可以创建特定的需求,例如,你可能想要比真正的webapp更短的网址,因为你不关心API中的SEO。

您认为如何?

编辑:

这是我心目中的,图书馆是在中间。 enter image description here

相关问题