2012-02-25 112 views
3

我並非試圖開始一場宗教戰爭,而是我個人真的不喜歡在資源URL中使用api版本信息。我認爲最好的方法是通過資源的Accept頭或將?version = 2添加到查詢字符串中。如果你對這個話題感到好奇。在這個主題上有很多關於StackOverflow的好消息(熱情的)。這是一個很好的thread here。另外,IMHO,Steve Klabnik的博客文章here。再次,這些只是我的推論,而我並沒有試圖在這個主題上再次創建一個線程。使用Accept頭對版本信息進行版本控制

我目前正在尋找一個Django包來幫助創建一個RESTful API。經過一番閱讀後,TastyPie似乎擁有我想要/需要的大部分內容,並且得到了很好的支持(並且有很好的文檔)。我只是想知道是否有一種方法來實現不同的版本控制方案?那裏有其他人做過嗎?是否有另外一個包可能更符合我的需要?

+0

我想你可以用Tastypie做到這一點。我最近實現了?filter = support,以避免直接在查詢字符串中放置屬性。此外,我首先使用Piston實現了我的API,但後來轉向了Tastypie,我更喜歡它。它更健壯,更靈活。所以我個人的看法是,Tastypie是目前用Django構建RESTful API的最佳工具(但我也不想開始一場戰爭;))。 – kgr 2012-03-02 18:20:47

回答

4

是的,您可以使用Accept頭或任何其他方法來對您的API進行版本化,並且以不針對您使用的任何Django API軟件包的方式執行此操作。一個簡單的方法是添加一些中間件來檢查相關請求的標題,然後根據指定的版本加載適當的URL配置文件。

在github上有幾個簡單的應用程序使用URL routing middleware,您可以自定義以滿足您的需求。

此外,Tastypie是驚人的,我強烈推薦它在活塞使用兩者後。