2012-08-10 36 views
0

我開始的Web項目應該非常靈活和模塊化,並且在將來肯定會增長很多。當我們計劃向其他開發人員提供api時,我開始考慮將所有方法實現爲api並提供遠程和內部使用它們的功能是一個好主意。在Django應用程序中設計用於內部和遠程使用的API

例如,我們想要提取所有註冊的用戶。所以我們在api中設計方法,例如get_all_users,它可能通過REST或內部調用提供。問題是我無法弄清楚如何區分訪問與內部使用和遠程使用,因爲我應該考慮內部調用的速度,代碼重用和用戶權限檢查(api訪問的祕密密鑰等)。什麼是最佳實踐?如何組織這樣的API?

+0

如果你在視圖中實現api,你會得到一個'HttpRequest'對象,該對象應該包含客戶端的信息(當然沒有欺騙) – darkphoenix 2012-08-10 06:30:25

回答

0

如果你還沒有考慮它,我建議使用Tastypie來設置一個API與Django。 爲了區分你的內部和遠程使用,也許你可以簡單地設計一個不同的URL方案。

2

所以建立API,TastypiePiston。這些可以讓你編寫'資源'(基本上是視圖的API版本) - 而不是返回httpresponses,而是返回活動/ tastypie轉換成json或xml或yaml或任何你喜歡的數據語言的對象。

確保訪問安全:考慮使用@login_required或@staff_member_required裝飾器根據需要裝飾任何包含機密信息的資源。

你甚至可能想更進一步,寫一個裝飾器來檢查員工用戶是否使用https(而你可能允許普通用戶使用任何連接類型)。

+1

我秒。我已經使用了幾次活塞,而且我一直對它感到滿意。然而,Piston wiki以外的文檔缺少一個不幸的缺點,但它的學習和實現起來還是比較容易的。 – 2012-08-10 14:23:17