Thi*_*ent 6 frontend ruby-on-rails backend rails-api ruby-on-rails-4
在学习Rails的过程中,我读到了如何将它与一些前端MV*JavaScript框架(如Backbone.js,Angular.js或Ember.js)结合起来以改进UX.
这引入了(对我而言)使用Rails作为API而不是Web应用程序的概念.
所以,现在,我很困惑:常规Rails应用程序和Rails API之间有什么区别?
Cyr*_*ris 13
常规的Rails应用程序将使用rails视图(erb或haml)直接呈现页面.也就是说,它将处理数据并在视图中呈现此数据,直接用HTML页面回答客户端请求.
Rails API将只处理您的操作,并假设其他人正在为客户端呈现视图.因此,Rails API需要以适当的格式返回数据,如JSON,XML,或者只是要执行的JS代码.然后,像AngularJS这样的前端框架的工作就是接收,解析和对数据做一些事情(比如更新一些HTML等)
简而言之,
现在,这不是我给出的黑色或白色答案.你可以完全拥有一个主要构建为Web应用程序的Rails应用程序,但有一些API动作可以提高对某些页面的响应能力.例如,有一个自动完成形式,即通过AJAX调用拉取数据.
Mey*_*hhi 10
根据官方rails网站,rails web应用程序和rails api有三个主要区别:
1 - api应用程序配置为以比正常情况更有限的一组中间件开始.具体而言,默认情况下,它不包括主要用于浏览器应用程序(如cookie支持)的任何中间件
2 - 在api应用程序中,ApplicationController继承自ActionController :: API而不是ActionController :: Base.与中间件一样,这将省去任何提供主要由浏览器应用程序使用的功能的Action Controller模块.
3 - api应用程序将生成器配置为在生成新资源时跳过生成视图,帮助程序和资产.
您始终可以将rails应用程序从其中一个转换为另一个.为此,请按照上面提到的参考中的步骤操作.
我在 Yoni Weisbrod 的Rails API Mini Guide中找到了一个非常明确的答案:
API 和常规 Rails 应用程序之间的根本区别在于 API 返回数据以供进一步处理,而不是直接查看的数据。因此,API 不是生成看起来漂亮的 HTML 文档(使用 CSS 和/或 Javascript),而是生成简单的信息结构,这些结构可以由使用我们 API 的任何内容进一步处理。