1

我对 Python/Django 很陌生,但我已经为一个网站 (siteA.com) 设置了一个 REST API,并且希望另一个网站 (siteB.com) 能够调用这个 API 并显示一些结果。为此,我已将 Django REST Framework 和 Django Auth2 Provider 添加到 siteA。我现在可以使用 curl 调用 API 来获取访问令牌:

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]

这给出了我想要的响应:

{"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]

这给了我一个 JSON 响应,其中包含查询字符串“SOMESTRING”的 3 个结果。

一切正常,但现在我想从 siteB.com 内拨打这些电话。换句话说,我想创建一个页面,如果使用某个 seach 查询调用,首先检查是否存在 [1] 中的访问令牌,然后获取搜索结果 [2] 并以 JSON 格式显示它们。我只是不知道该怎么做。尝试使用 requests_oauth2 中的 OAuth2,但根本不知道将 curl 语句转换为 Python 的正确方法。有什么帮助吗?

4

1 回答 1

3

如果您希望 siteB.com 公开 siteA.com 的 API,请考虑django-rest-framework-proxy(一个不错的第三方包)。

如果您希望 siteB.com 将来自 siteA.com 的 API 的结果嵌入到常规 HTML 页面中,那么您需要访问数据的 API,然后将其传递给通常的模板呈现方法。根据您可以使用的评论,urllib2但我推荐优秀的Requests

我希望这会有所帮助。

于 2013-09-27T07:29:23.800 回答