从一个Django站点到另一个站点的API调用

2024-10-02 22:27:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python/Django还很陌生,但我已经为一个网站设置了restapi(siteA.com网站),并且想要另一个网站(siteB.com网站)能够调用这个API并显示一些结果。为此,我向siteA添加了Django REST框架和Django Auth2提供程序。我现在可以使用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]

这会得到我想要的答案:

^{pr2}$

使用我获得的访问令牌,我现在可以调用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\u OAuth2中使用OAuth2,但不知道将curl语句转换为Python的正确方法。有什么帮助吗?在


Tags: djangocomclientapijsonhttp网站www
1条回答
网友
1楼 · 发布于 2024-10-02 22:27:20

如果你想的话siteB.com网站暴露siteA.com网站的API然后考虑django-rest-framework-proxy(一个不错的第三方包)。在

如果你想的话siteB.com网站嵌入结果的步骤siteA.com网站的API,然后您需要打开数据的API,然后将其传递到常用的模板呈现方法中。根据评论,你可以使用urllib2,但我推荐最好的Requests。在

我希望这有帮助。在

相关问题 更多 >