使用 Python 中的请求包使用 API 密钥调用 REST API

Calling REST API with an API key using the requests package in Python

使用请求包调用下面的 REST API 的 python 代码应该是什么?不知道怎么传了"apikey"

curl -X POST -u "apikey":"1234abcd" -H "Accept: application/json" -F "file=@{input_file}" https://api_url

感谢您的帮助。

您的 curl 命令就像代码一样。当你不知道它支持什么的时候,你可以curl --help或者用curl ... --trace-ascii 1.txt弄清楚这个过程。

from requests.auth import HTTPBasicAuth
import requests

url = 'https://api_url'
headers = {'Accept': 'application/json'}
auth = HTTPBasicAuth('apikey', '1234abcd')
files = {'file': open('filename', 'rb')}

req = requests.get(url, headers=headers, auth=auth, files=files)

有两种方法可以做到这一点:

选项 1

import base64
import requests
method = "get"
url = "https://xxxxx"
auth_string = f"{apiKey}:{secret}"
auth_string = auth_string.encode("ascii")
auth_string = base64.b64encode(auth_string)
headers = {
       'Accept': 'application/json',
       'Authorization' : f"Basic {auth_string.decode('ascii')}"
}
rsp = requests.request(method, url, headers=headers, auth=None)

选项 2

import requests
from requests.auth import HTTPBasicAuth
method = "get"
url = "https://xxxxx"
auth = HTTPBasicAuth(apiKey, secret)
rsp = requests.request(method, url, headers=None, auth=auth)

所有内容都作为 header 传递,因此您的 header 可能如下所示:

self.headers = {
    'Content-type': 'application/json', 
    'Authorization': f'ApiKey {self.passwd}',
}  

您的实际请求可能如下所示:

requests.get(url, auth=None, headers=self.headers)