适用于API的{Rails 4最佳做法

时间:2015-06-10 20:34:07

标签: json api ruby-on-rails-4

我在网络应用上构建了一个API,我对如何设置它有一些疑问。

某些记录无法通过网络应用程序本身创建,但API不仅可以完全控制创建,还可以完全控制其他网络应用程序功能。

我们说我有3个rails对象:用户 has_one 商家 has_many 评级 < / p>

在网络应用中,用户拥有对用户商家的完全CRUD控制权,但只有评级的RUD控件(无创建) )。

在API中,对所有三个对象都有完整的CRUD控制。

所以,说到这一点,我应该如何构建我的文件?乍一看,人们会认为我会为所有三个对象创建普通控制器,并且只限制&#34;创建&#34; receipts_controller.rb中用于JSON访问(API)的事件。但是,如果我为我的API使用命名空间(myapp.com/api/v1/receipt.json),我的收据对象是否需要单独的控制器?

在写这篇文章的时候,我想到了像普通法一样命名API并让/api/v1/receipts_controller.rb文件扩展正常/receipts_controller.rb - 这是正确的方法吗?

显然我不希望网络应用程序和API运行不同的控制器,这就是我在这个问题上寻求一些建议的原因。

1 个答案:

答案 0 :(得分:0)

不确定我是否理解你的解释。这是我的2cents。我更喜欢为API和Web App提供单独的控制器。 有几个原因:

  1. 当您开始发布新版本时,您不想更改Web应用程序控制器,您也不希望在条件允许的情况下过多。这是纯粹的邪恶。您只需要制作~/v2/~并将所有逻辑放在那里。

  2. Skinny Controller是关键,混合使用API​​和Web App Controller会使调试控制器变得更加困难,并且您可能会遇到太多方法

  3. 使用不同的API控制器,您可以在其上强制执行不同的安全策略,并使您的Web应用程序保持独立。