2016-03-16 72 views
0

我遇到過兩個關於在Rails中創建REST API的場景,我不知道哪一個是首選。如果您知道在開始時需要爲您的應用程序提供REST API,則通常爲 。將它放在名稱空間中並重復控制器邏輯是否有意義?Rails REST API實踐

我見過一些例子,人們已經有了一個應用程序,後來他們需要擴展並提供一個REST API。對此的方法是用namespaceroutes.rbcontrollers/api/whatever...中創建新路線。儘管如此,這仍然會產生重複的代碼,但可能是更明智的做法。區別在於REST API調用的無狀態機器。

任何人都可以詳細說明首選方法,謝謝。

回答

0

如果您創建一個Rails應用程序,並遵循常規慣例,您基本上最終會得到一個REST API。除非你在談論這個術語的更具體含義(我不知道這個術語),「REST API」更多地是API的一般特徵(即無狀態,基於資源的URI如果使用HTTP,等等。)。

因此,將問題轉回給您:您在考慮哪種情況(傳統的)Rails應用程序不是通過擴展平凡地是REST API?

+0

那麼在正常應用程序的情況下,您需要在BaseController中設置CSRF標記,但是如果您希望公開API並對這些操作進行操作(不是通過web應用程序gui),則應該禁用該標記。如何解決這個問題並禁用CSRF,但在同一控制器中的「正常」情況下啓用它? – Rabiees

+0

要禁用CSRF,請參閱http://api.rubyonrails.org/classes/ActionController/RequestForgeryProtection/ClassMethods.html。只有在瀏覽器(非API)環境中時,纔可以使用':with'選項來引發異常。請參閱http://stackoverflow.com/questions/10741339/do-csrf-attacks-apply-to-apis。 – AnoE

+0

謝謝,但我真的不知道如何使用它來解決我的問題。 – Rabiees