如何使用密钥而不是基本身份验证用户名和密码将Python连接到RESTful API?

wau*_*try 11 python api curl python-requests

我是编程新手,并被要求接管一个项目,我需要更改当前用于连接Ver 1 RESTful API的Python代码.该公司已切换到API的Ver 2,现在需要ID和密钥进行身份验证,而不是基本的用户名和密码.适用于Ver 1 API的旧代码如下所示:

import requests
import simplejson as json
import pprintpp as pprint

#API_Ver1 Auth
USER = 'username'
PASS = 'password'
url = 'https://somecompany.com/api/v1/groups'
s = requests.Session()
s.auth = (USER, PASS)

r = json.loads(s.get(url).text)
groups = r["data"]
Run Code Online (Sandbox Code Playgroud)

我可以使用cURL字符串通过终端连接到Ver 2 API,如下所示:

curl -v -X GET -H"X-ABC-API-ID:xxxxx"-H"X-ABC-API-KEY:nnnnnnnnnnnnnnnnnnnnnnnnnnnnn"-H"X-DE-API-ID:x"-H"X- DE-API-KEY:nnnnnnnnnnnnnnnnnnnnnnnnn"" https://www.somecompany.com/api/v2/groups/ "

我已经搜索过了,但是找不到从cURL字符串中获取ID和密钥以允许使用Python访问Ver 2 API的方法是不成功的.感谢您在帮助菜鸟完成此代码更改时的考虑!

r-m*_*m-n 15

您可以将HTTP标头添加到请求中

headers = {
    'X-ABC-API-ID': 'x-x-x-x-x',
    'X-ABC-API-KEY': 'nnnnnnnnnnnnnnnnnnnnnnn',
    'X-DE-API-ID': 'x',
    'X-DE-API-KEY': 'nnnnnnnnnnnnnnnnnnnnnnnn'
}
r = requests.get('https://www.somecompany.com/api/v2/groups/', headers=headers)
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,mn!您的回答就像一个魅力! (2认同)
  • 如何获得特定网站(例如amazon.com)的有效x-api-key?它们是如何产生的? (2认同)
  • @py_ios_dev取决于API。例如,对于AWS,您想转到IAM并在用户的安全证书下请求API密钥。 (2认同)