2015-06-28 94 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應用程序從其中任何一個轉換爲另一個。爲此,請按照上述參考中的步驟操作。

相關問題