2011-09-27 18 views
0

對於web開發中API的使用,我很新穎。我正在使用python/django中的web應用程序來製作ajax jsonp請求到巨型炸彈api。當我學習如何使用這個API來獲取信息需求時,我開始意識到某些事情應該可以在我的代碼中更好地處理,以達到各種效率/安全性原因。但我不熟悉使用基於web的API的慣例。這裏有幾個問題一直在考慮:API使用約定

  1. 在地址欄或源代碼中使用我的api-key是不好的。
  2. 由於我使用的是Django/Python,我應該爲每個api請求創建一個自定義視圖並使用simplejson?我想使用AJAX來減少請求數量,並獲得更好的動態UI。
  3. 在這些情況下,api-keys,api-url保存到會話中,然後根據需要進行訪問?

感謝您的幫助和耐心提前,

回答

2
  1. 有你的API密鑰對用戶可見意味着他們可以做請求你。這種情況是否糟糕取決於所討論的API。如果可以進行三段身份驗證,則服務器可以與API服務器協商一個臨時密鑰(例如Oauth會話密鑰),並僅與瀏覽器共享該臨時密鑰。

  2. 如果您打算讓瀏覽器通過AJAX執行API請求,您的視圖根本不會進入圖片,除非將API憑據傳遞給瀏覽器以用於JavaScript。如果您正在進行三段身份驗證,您的服務器會將API密鑰存儲在永久(數據庫或文件)的某處,但會話密鑰可能位於更臨時的位置(例如存儲會話數據的任何位置)。但它仍然需要傳遞給瀏覽器,假設它正在執行實際的API請求。

+0

2.我想怎樣處理這個的一種方法是通過創建我自己的API,將請求轉發到giantbomb API。所以我會做一個ajax我自己的API /視圖,使巨型炸彈api jsonp請求。我現在唯一的問題是,我知道如何使用Python/Django處理jsonp請求。 – russjman

+1

啊,如果你的計劃是讓服務器執行請求,你並不需要jsonp。有幾個包使得與外部API輕鬆交流,但是取決於它是什麼類型的API。如果它是REST,請查找python REST庫。如果它是自定義的,你需要找到一個或寫你自己的 - 我建議看看python包「請求」。 – GDorn

+0

針對python請求的+1。當我正在試驗這個項目並使用urllib2來處理我的請求時,我就像是「所有這些都提出了一個簡單的請求?...... wtf」。謝謝你! – russjman