2013-09-25 48 views
1

我很新到Python/Django的,但我已經建立了一個REST API的一個網站(siteA.com),並希望其他網站(siteB.com)才能調用此API並顯示一些結果。爲此,我將Django REST Framework和Django Auth2 Provider添加到siteA。API調用從一個Django的網站到另一個

curl -X POST -d "client_id=CLIENT_ID&client_secret=CLIENT_SECRET&grant_type=password&username=USERNAME&password=PASSWORD" http://www.siteA.com/oauth2/access_token [1] 

這給了我想要的迴應:我現在可以使用curl以獲得訪問令牌調用API

{"access_token": "72x63615xe29f4xfdadexbcd77x27b5fx0bceexx", "scope": "read", "expires_in": 86399, "refresh_token": "5fx80dx320cx3abe7d0x27d5f1x64e7x413x0f70"} 

使用訪問令牌我得到我現在可以調用API:

curl -v -H "Authorization: Bearer 72x63615xe29f4xfdadexbcd77x27b5fx0bceexx" "http://www.siteA.com/api/?q=SOMESTRING&per_page=3&page=1&sort=random"  [2] 

這給了我3個結果的查詢字符串「SOMESTRING」的JSON響應。

這一切工作正常,但現在我想打從內siteB.com這些調用。換句話說,我想創建一個頁面,如果使用特定的查詢查詢調用,首先檢查是否存在[1]中的訪問標記,然後獲取搜索結果[2]並以JSON格式顯示它們。我只是不知道該怎麼做。試圖從requests_oauth2使用OAuth2,但根本不知道將curl語句翻譯成Python的正確方法。任何幫助?

+0

檢出urrlib2隊友。 –

+0

我可以看到我在之前的評論中發生了錯誤。它的urllib2不urrlib2:P –

+0

我試着用OAUth第一次失敗,然後嘗試與請求,但最後與urllib2管理。 JUST這3行完成了大部分工作:'req = urllib2.Request(url,query_string); file = urllib2.urlopen(req); result = ast.literal_eval(file.read());' –

回答

3

如果你想siteB.com暴露siteA.com的API,然後考慮django-rest-framework-proxy(一個很好的第三方包)。

如果你想siteB.com嵌入從siteA.com的API導致普通的HTML頁面,那麼你就需要打了API的數據,然後傳遞到通常的模板繪製方法。根據評論,你可以使用urllib2,但我會推薦優秀的Requests

我希望幫助。

相關問題