2010-04-01 32 views
0

假設我希望能夠通過轉到/ product/list來查看我網站上的產品列表。大。所以這使用我的'列表'視圖,並輸出一些HTML,我的Web瀏覽器將呈現。如果我在RoR中有一個同名的API方法和控制器/視圖方法,該怎麼辦?

但是現在假設我想爲我的客戶提供一個REST API,以便他們可以獲取他們的產品列表。所以我想我會讓他們使用oAuth進行身份驗證,然後他們會調用/ product/list來返回他們產品的JSON數組。

但正如前面所說,/ product/list顯示一個HTML網頁。所以,我有衝突。

就在Rails中提供API而言,什麼是正常實踐?我應該在/ app/controller還是另一個'產品'控制器中有一個子目錄,'api'?所以我的客戶會去/ api/product/list來獲取他們產品的列表?

我對RoR有點新,所以我沒有掌握REST功能,但希望我的問題有道理。

回答

2

常見的做法是使用respond_to方法。您可以讓一個控制器呈現HTML網頁,JSON或XML響應。

class StatesController < ApplicationController 
    def index 
    @states = State.get_states_by_country(params[:country_id]) 

    respond_to do |format| 
     format.html 
     format.json { render :json => { :prompt => t('address.select_state'), 
             :states => @states.to_json(:only => [:id], :methods => [:name]) }} 
     format.js 
    end 
    end 
end 
+0

生病了。生病了。我使用ExtJS,我發現我可以做到這一點 - Ext.Ajax.defaultHeaders = {'Accept':'application/json'}; - 然後只要在我的「responds_to」塊中有一個format.json,Rails知道對'/ product/list'的請求應該返回JSON數據 - 我不必請求'/ product/list。 JSON」。真棒。 – 2010-04-02 01:37:59

相關問題