2012-06-04 49 views
0

我正在創建一個基於Rails的API來管理短信訂閱。有一個subscriptions控制器respond_to :html, :json, :xmlSubscription模型。兩者都正常工作。創建基於Rails的API。保存對象後丟失了什麼

訂閱時,用戶仍然需要通過在發送到他的手機的頁面上輸入PIN來確認他的訂閱,所以我想到一個confirms控制器來管理它。

我對如何實現這一點有幾個問題。

(1)訂閱後,正確的做法或最佳做法是什麼?顯示創建的訂閱對象(html,json或xml,具體取決於它是如何創建的),並將確認控制器作爲單獨操作來管理,還是應該重定向到確認控制器?

我想,既然API響應json和XML,是不是一個好主意重定向到任何其他頁面/控制器,並會更好地顯示創建的對象?

(2)如果是這樣,我使用CanCan來管理角色能力。由於訂閱屬於User所有者(開發人員),因此不需要進行身份驗證就可以執行POST(我知道誰是用戶所有者因給出關鍵字/短代碼的組合而關聯),並且訂閱可以由任何瀏覽者進行(創建之前不需要進行身份驗證)我怎麼能限制創建的對象到那個衝浪者?

我猜如果登錄User,就很容易向他顯示對象,因爲它是所有者,但是如何創建對象並且不需要進行身份驗證?

我沒有任何方式將衝浪者連接到對象以限制它的能力。

(3)創建一個普通的衝浪者後,向對象展示對象是個好主意嗎?我可能認爲這可能與開發人員通過api本身通過json執行操作時不相關?

訂閱模式很簡單,它的工作原理是這樣的

$ curl http://mysite.com/subscriptions \ 
-d shortcode=7889 \ 
-d keyword=KEYWORD \ 
-d phone=6895874587 \ 
-d country=us \ 

回答

1

讓我嘗試通過一個:)

  1. 攻擊它的一個記錄創造了一般一個很好的做法後如果它的狀態碼支持它,則返回該對象,即如果創建了該記錄,則應返回該對象以及200個狀態碼。請記住,一些身份代碼不允許身體,即201. 通常最現代的http客戶支持重定向,但我仍然保持在兩個單獨的行動

  2. 在通常情況下,它仍然是一個好主意,以驗證用戶,因爲您想阻止一位用戶代表另一位用戶發帖。不論您是否可以確定用戶是通過分析參數誰可以綁訂閱它例如:

    @用戶= User.find_by_phone(PARAMS [:手機]) @subscribtion = @ user.subscribtions.build(PARAMS )

  3. 是的,它通常是一個好主意,可以返回已保存的內容。

+0

(2)。用戶不是訂閱的創建者。用戶是網站所有者(可以訪問該API)並且創建該訂閱的人可以是任何衝浪者。它不需要認證用戶(API所有者)來訂閱用戶。這就是爲什麼我不確定如何做到這一點。 – Martin