2015-06-28 23 views
4

在学习Rails的过程中,我读到关于我们如何能与一些前端MV * JavaScript框架结合起来 - 比如Backbone.js的,Angular.js,或Ember.js - 改善UX。常规的Rails应用程序和Rails API有什么区别?

此介绍(对我)的使用Rails作为API的概念,而不是一个Web应用程序。

所以,现在,我很困惑:是什么正规Rails应用程序和Rails的API之间的区别?

回答

0

我发现号Yoni魏斯布罗德是一个非常明确的答案Rails API Mini Guide

一个API和一个日常的Rails应用程序之间的根本区别是 ,一个API返回进行进一步的处理数据,而不是数据 旨在直接查看。因此,这看起来不是生产 HTML文件(CSS和/或Javascript)相当,原料药 产生可以通过 任何将消耗我们的API进行进一步处理简单的信息结构。

+1

问题是RAILS api和RAILS web应用程序之间有什么区别。您的回答似乎只涵盖了api和一般网络应用程序之间的差异。 –

6

常规Rails应用程序将使用rails视图(erb或haml)直接呈现页面。也就是说,它将处理数据并在视图中呈现此数据,并直接用HTML页面回答客户端请求。

Rails的API将只处理您的行动,并承担别人在做渲染客户视图的工作。因此,Rails API预计会以适当的格式返回数据,例如JSON,XML或者只是一段JS代码来执行。它是那么像AngularJS前端框架的工作接收,解析和对数据进行处理的东西(如更新一些HTML等)

简而言之,

  • 经典的Rails应用程序都是清一色在一个应用程序中,处理和呈现都由Rails处理。然而,应用程序可能缺乏或响应,因为完整的页面被渲染,但通常以这种方式进行编码要快得多。
  • Rails API只是提供中间结果。它将专注于提供数据。如果您对设计/响应能力有强烈的要求,这样会更好,因为您可以使用前端库更灵活。通常只有数据被传输,所以另外它可以更快。 API有一些问题。例如,使用单页应用程序+完整的AJAX,在用户浏览器上设置前进/后退行为可能会更困难。另外,使用API​​将需要更多的工作,但是如果您有许多开发人员,则可以就接口达成一致,并将工作服务器/前端并行化。

现在,它不是一个黑或白的答案我给。您完全可以拥有一个主要构建为Web应用程序的Rails应用程序,但可以通过一些API操作提高对某些页面的响应速度。例如,有一个自动完成表单,即通过AJAX调用拉取数据。

+1

一个非常常见的情况是使用API​​的“Web应用程序”,它主要面向为第三方客户端提供数据和交互性,而不仅仅是为了内部消费。 “吃你自己的狗粮”是一个很好的起点,但如果你没有将API与你自己的用法隔离,往往会导致API的混乱。一个非常常见的例子就是人们提供完全错误的JSON响应,因为他们主要构建了端点以显示图形。 – max

6

按照official rails website,有轨Web应用程序和轨道API之间的三个主要区别:

1 - 中的API的应用程序被配置为启动与一组更有限的中间件比正常的。具体来说,默认情况下,它不包含任何主要用于浏览器应用程序(如cookies支持)的中间件

2 - 在api应用程序中,ApplicationController继承ActionController :: API而不是ActionController :: Base。与中间件一样,这将省去任何提供主要由浏览器应用程序使用的功能的操作控制器模块。

3 - api应用程序配置生成器以在生成新资源时跳过生成视图,助手和资产。

您可以随时将您的Rails应用程序从其中任何一个转换为另一个。为此,请按照上述参考中的步骤操作。

相关问题