我正在尝试使用需要授权令牌的API和Python 2.7的请求库。 API文档提供了curl的示例代码:
curl <url> \
-is \
-X GET \
-H 'Accept: application/vnd.rn+json' \
-H 'Content-Type: application/vnd.rn+json' \
-H 'Authorization: Token token="<hexstring>"'
我如何将其转换为请求的正确语法,并检查状态?我尝试过一些事情,但没有一件事有效:
import requests
url = '<url>'
header = {'Authorization':'<hexstring>'}
r = requests.get(url,header)
print r.status_code
和
import requests
url = '<url>'
token = '<hexstring>'
header = {'Authorization':token}
r = requests.get(url,header)
print r.status_code
甚至
import requests
url = '<url>'
header = {'Authorization':'Authorization: Token token="<hexstring>"'}
r = requests.get(url,header)
print r.status_code
所有东西都保持返回401状态,因此令牌没有正确通过。有关如何正确做到这一点的任何想法?感谢。
编辑:我想我应该添加 - 我正在使用的令牌是正确的,所以这不是问题。
答案 0 :(得分:0)
如果您使用的是 AWS API Gateway,则授权标头必须有“Bearer”后跟一个空格。这是“GET”请求的示例。 POST 将需要请求中的正文。您可能还需要为
添加标题#!/usr/bin/env python3
import requests
api_name = "my_api"
amazon_region = "us-east-1"
url = f"https://{api_name}.execute-api.{amazon_region}.aws.com/Prod"
token = "some-long-string"
headers = {"Authorization": f"Bearer {token}"}
r = requests.get(url, headers=headers)
print(r.json())