2013-09-25 44 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

我希望帮助。

相关问题