我在网络应用上构建了一个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运行不同的控制器,这就是我在这个问题上寻求一些建议的原因。
答案 0 :(得分:0)
不确定我是否理解你的解释。这是我的2cents。我更喜欢为API和Web App提供单独的控制器。 有几个原因:
当您开始发布新版本时,您不想更改Web应用程序控制器,您也不希望在条件允许的情况下过多。这是纯粹的邪恶。您只需要制作~/v2/~
并将所有逻辑放在那里。
Skinny Controller是关键,混合使用API和Web App Controller会使调试控制器变得更加困难,并且您可能会遇到太多方法
使用不同的API控制器,您可以在其上强制执行不同的安全策略,并使您的Web应用程序保持独立。