2010-11-20 86 views
9

當您想要在Django中「重新使用」Django項目時,您更喜歡什麼?用於Django項目/應用程序的RESTful API

我得出的結論是真的有三種選擇這樣做:

對我來說,正確的做法是嘗試一切,選擇最適合自己的方式,同時我希望聽到你的聲音...

謝謝。

回答

7

我對django-piston最熟悉,所以我會自然地引導你朝那個方向發展。

然而,快速瀏覽另外兩個,表明django-rest-interface只不過是將模型作爲資源展示出來,而且django-restful-resources也是一些人的一次性嘗試。

活塞,如果我記得沒錯,從bitbucket.org自己的網站開發中誕生,並且具有很大的靈活性 - 您可以從資源的訪問方法中返回幾乎任何對象,而不僅僅是模型實例,它會正確地編碼。它還內置了對一些很好的功能的支持,比如表單驗證(如果你能讓它正常工作),並請求限制等等。

+0

感謝您的回答。 – Ali 2010-11-20 19:39:47

3

作爲編寫django-restful-resources的「某個人」,我想澄清它爲什麼存在。它不是試圖將模型公開爲資源,而是一種允許將單個URL映射到多個不同處理方法的手段,每個HTTP動詞一個。就這樣。它可用於公開模型對象,但也可用於將服務作爲資源或其他任何想要通過單個URL和HTTP動詞進行交互的服務公開。如果您正在尋找更全面的解決方案,那麼請儘量與活塞一起使用。

+0

嗨湯姆,感謝您花時間回答這個問題。你能告訴我關於HTTP動詞的東西嗎?謝謝。 – Ali 2010-12-03 18:56:06

+2

嗨,HTTP動詞(或HTTP方法)是GET,POST,PUT,HEAD,DELETE,OPTIONS和TRACE。您可以在以下鏈接中找到有關如何使用它們編寫RESTful Web服務的非常好的說明: - http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html - http:// www。 amazon.com/REST-Practice-Hypermedia-Systems-Architecture/dp/0596805829 - http://watchitlater.com/blog/2009/11/http-method-primer-for-restful-web-services/(無恥的插件) – Tom 2010-12-20 10:42:01

2

正如eternicode所述,django-piston非常好。它很成熟,功能很強,並且有一個很好的社區。它似乎目前缺乏持續的發展,儘管有關於社區驅動的分支的討論,所以這可能會改變。

django-tastypie也非常值得一看,而且目前似乎背後有很多動力。

我也剛剛發佈了另一個值得考慮的選項:django-rest-framework。背後有幾個非常不錯的功能,例如API auto-documentation

它使用Django 1.3的基於類的視圖,如saverio所述,這意味着您可以放入它提供的一些MixIn類,而無需直接使用該框架。 (例如adding HTTP content negotiation for serializing output to multiple types

5

在django 1.3中使用新的基於類的通用視圖,使用自定義序列化器和反序列化器,使用股票代碼複製幾乎完整的活塞實現將非常容易實現您自己的休息界面。我在500行代碼中創建了基於View(1.3)的休息模塊,其中包含通用的RESTful資源類和子資源,對關聯,json和XML序列化等的自然關鍵支持。該模塊是真正根據我的應用程序的要求量身定製的

我這樣做是爲了克服活塞代碼中的一些限制,比如在處理程序調用.get()之前修改了一個查詢集(例如With .values(...) ),或者無法在序列化中使用模型的方法。

如果你在需要的時候這樣做,幾天後你將有一組工作的類和mixins,你將完全理解和控制。

+0

您可以在http://github.com/rewritten上嘗試我自己的寧靜觀點。它沒有經過徹底的測試,可能會更好地觀察它。 – rewritten 2011-02-26 23:59:03

相關問題