带有响应的Python API - 身份验证

时间:2017-04-12 19:17:33

标签: python json api authentication python-requests

使用Python和Request使用Streak CRM API。我收到4XX错误取决于我如何表达请求。 (以下示例)

response = requests.get('https://www.streak.com/api/v1/pipelines?api-key=xxxxxxxx')
response.headers['Content-Type'] = 'application/json'
print(response.status_code)
print(response.content)

结果:401“Streak API需要验证:尝试HTTP Basic Auth或cookie auth”

如果我在文件路径后添加“.json”:

requests.get('https://www.streak.com/api/v1/pipelines.json?api-key=xxxxxxxx')

结果:400“指定了无效的API路径”所以我假设我已经过身份验证,但文件路径定义不正确。

但是,如果我使用在终端中输入的相同文件路径和凭据:

curl https://www.streak.com/api/v1/pipeline -u xxxxxxxx:

像魅力一样工作。

为什么文件路径在终端中工作但在python中不起作用?为什么我需要将.json添加到我的文件路径?使用API​​的新手,所以任何帮助表示赞赏。谢谢。

2 个答案:

答案 0 :(得分:0)

我不知道为什么,但是像下面那样改写它起作用了。我收到状态码200:

response = requests.get('https://www.streak.com/api/v1/pipelines', auth=('xxxxxx',''))

API密钥位于username参数中,密码参数留空。

答案 1 :(得分:0)

错误消息告诉您需要知道的所有内容。对于Basic Auth,您将授权信息放在请求标头中,而不是在网址中。将.json添加到端点时,通常意味着您需要JSON响应。它与curl一起工作的原因是因为curl的-u标志设置了Auth标头。