为什么将api控制器与典型的动作控制器分开?

时间:2014-05-22 01:42:02

标签: ruby-on-rails angularjs

我见过的一些示例rails / angularjs应用程序将API保留在自己的命名空间下。这些控制器只响应json。我不明白为什么这些需要自己的命名空间,因为控制器操作旨在能够响应不同的类型(html,js)。

例如https://github.com/mkwiatkowski/todo-rails4-angularjs

2 个答案:

答案 0 :(得分:2)

我保持API独立,因为我的控制器返回HTML。我知道从控制器返回不同的格式很容易,但是一旦你开始在控制器中获得很多不同的格式,它就会很快占用大量的空间并从实际的控制器逻辑中减去。

另一个共鸣,或许更重要的是版本控制。使用API​​,您通常会拥有可能无法控制的客户端。当您将它们命名为标准控制器之外的命名空间时,更容易为不同版本的API提供支持。这样,如果您有一个重大变化,您可以创建一个新版本,而不用担心可能尚未更新的旧客户

答案 1 :(得分:1)

保持这些分离的一个常见原因是身份验证。典型的UI控制器可能使用会话,但REST / API控制器通常不使用它。 api令牌很典型。