我正在尝试将API查询到python中。命令行
curl --header "Authorization:access_token myToken" https://website.com/id
给出了一些json输出。 myToken是一个十六进制变量,始终保持不变。我想从python进行这个调用,这样我就可以遍历不同的id并分析输出。有任何想法吗?在需要身份验证之前,我已经使用urllib2完成了这项工作。我还看了一下请求模块,但无法弄清楚如何做到这一点。
非常感谢。
答案 0 :(得分:78)
requests包有一个非常好的HTTP请求API,添加自定义标头就像这样工作(source: official docs):
>>> import requests
>>> response = requests.get(
... 'https://website.com/id', headers={'Authorization': 'access_token myToken'})
如果您不想使用外部依赖项,那么使用标准库的urllib2就是这样(source: the missing manual):
>>> import urllib2
>>> response = urllib2.urlopen(
... urllib2.Request('https://website.com/id', headers={'Authorization': 'access_token myToken'})
答案 1 :(得分:15)
尝试与Github一起使用令牌时遇到了同样的问题。
使用Python 3的唯一语法是:
import requests
myToken = '<token>'
myUrl = '<website>'
head = {'Authorization': 'token {}'.format(myToken)}
response = requests.get(myUrl, headers=head)
答案 2 :(得分:8)
>>> import requests
>>> response = requests.get('https://website.com/id', headers={'Authorization': 'access_token myToken'})
如果上述方法无效,请尝试以下操作:
>>> import requests
>>> response = requests.get('https://api.buildkite.com/v2/organizations/orgName/pipelines/pipelineName/builds/1230', headers={ 'Authorization': 'Bearer <your_token>' })
>>> print response.json()
答案 3 :(得分:3)
import requests
BASE_URL = 'http://localhost:8080/v3/getPlan'
token = "eyJhbGciOiJSUzI1NiIsImtpZCI6ImR"
headers = {'Authorization': "Bearer {}".format(token)}
auth_response = requests.get(BASE_URL, headers=headers)
print(auth_response.json())
<块引用>
输出:
{
"plans": [
{
"field": false,
"description": "plan 12",
"enabled": true
}
]
}
答案 4 :(得分:0)
我将添加一个提示:似乎您传递的内容是标题的键值取决于您的授权类型,在我的情况下为PRIVATE-TOKEN
header = {'PRIVATE-TOKEN': 'my_token'}
response = requests.get(myUrl, headers=header)
答案 5 :(得分:0)
您是否尝试过uncurl
软件包(https://github.com/spulec/uncurl)?您可以通过pip pip install uncurl
安装它。您的curl请求返回:
>>> uncurl "curl --header \"Authorization:access_token myToken\" https://website.com/id"
requests.get("https://website.com/id",
headers={
"Authorization": "access_token myToken"
},
cookies={},
)