Мне нужно написать эквивалентный Python-код для упомянутого ниже рабочего curl (я заменил учетные данные по очевидной причине, но он возвращает статус 200).
curl -X POST \
'https://api.lever.co/v1/candidates?dedupe=true&perform_as=user_123' \
-H 'Authorization: Basic token_123' \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: multipart/form-data' \
-H 'Postman-Token: 58cafa90-7ae4-47db-a144-4e9d430ffc94' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-F 'files[]=@/Users/gaurav/lever_resume.pdf' \
-F 'emails[]=a@b.com'
Итак, я закончил писатьэтот фрагмент.
user_email = 'user@domain.com'
admin_id = '20f3975a-543f-4ca8-b215-2f851232a0ad'
client_id = '893728937298'
client_secret = '32032'
file_path = '/Users/ttn/Desktop/a.txt'
file_name = 'a.txt'
logging.basicConfig(level=logging.DEBUG)
url = "https://api.lever.co/v1/candidates"
files = {
'files[]': (file_name, open(file_path,'rb')),
}
auth = HTTPBasicAuth(client_id, client_secret)
querystring = {
"perform_as": admin_id,
"dedupe": 'true'
}
payload = {
'emails[]': user_email
}
headers = {
'Content-Type': "multipart/form-data",
"Cache-Control": "no-cache",
"content-type": "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW"
}
response = requests.post(url,
headers=headers,
params=querystring,
data=payload,
auth=auth,
files=files)
req = response.request
# print(curlify.to_curl(req))
print('\n==== Headers', req.headers)
print('\n==== Body', req.body)
print('\n==== form-data', str(req))
print(response.text)
Вопрос
Так как версия Curl на Python не работает (выдает ошибку 502 вместо 200), так как я могу сравнить два?Могу ли я сгенерировать Curl из запроса Python `?
Может ли кто-нибудь заметить ошибку в моей версии Python?Я подозреваю некоторую проблему при передаче данных формы (для сбора доказательств мне нужен ответ на поставленный выше вопрос)
Редактировать
Кажется, есть свернуть пакет.Но похоже, что он не поддерживает различие между параметрами -d
и -F
.