Вызов Curl для перевода python в postman

#python-requests #postman

#python-запросы #postman

Вопрос:

У меня есть успешный Post-вызов API через postman, но когда я генерирую фрагмент кода для вызова curl, раздел полезной нагрузки выдает ошибку

Рабочий вызов curl

 curl --location --request POST 'url_to_be_used' 
--header 'Authorization: Token [QWS-T]eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9' 
--form 'payload={
"data": {
"Service_Type": "Tele-Consultation",
"CSR_Partner_Logo": [["", "", "", ""], []],
"Service_Count": "500 ",
"Name": "name_to_be_given"
}
}'
 

Фрагмент кода, сгенерированный, как показано ниже

 import requests

url = "url_to_be_used"

payload = {'payload': '{
"data": {
"Service_Type": "Tele-Consultation",
"CSR_Partner_Logo": [["", "", "", ""], []],
"Service_Count": "500 ",
"Name": "name_to_be_given"
}
}'}
files = [

]
headers = {
  'Authorization': 'Token [QWS-T]eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9'
}

response = requests.request("POST", url, headers=headers, data = payload, files = files)

print(response.text.encode('utf8'))
 

python выдает ошибку как SyntaxError: EOL при сканировании строкового литерала для полезной нагрузки, которая, как я предполагаю, связана с одинарными кавычками. Когда я удаляю отдельный код, чтобы сделать его синтаксическим без ошибок, последний вызов post выдает ошибку «недопустимая полезная нагрузка». Пожалуйста, укажите, как это исправить.

Ответ №1:

Согласно документации полезная нагрузка ожидает словарь:

https://requests.readthedocs.io/en/master/user/quickstart/

так что попробуйте:

 import requests

url = "url_to_be_used"

payload={
"data": {
"Service_Type": "Tele-Consultation",
"CSR_Partner_Logo": [["", "", "", ""], []],
"Service_Count": "500 ",
"Name": "name_to_be_given"
}
}
files=[

]
headers = {
  'Authorization': 'Token [QWS-T]eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9'
}

response = requests.request("POST", url, headers=headers, data=payload, files=files)

print(response.text)
 

Можете ли вы также попробовать использовать три одинарные кавычки

 import requests

url = "url_to_be_used"

payload={'payload': '''{
"data": {
"Service_Type": "Tele-Consultation",
"CSR_Partner_Logo": [["", "", "", ""], []],
"Service_Count": "500 ",
"Name": "name_to_be_given"
}
}'''}
files=[

]
headers = {
  'Authorization': 'Token [QWS-T]eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9'
}

response = requests.request("POST", url, headers=headers, data=payload, files=files)

print(response.text)
 

Комментарии:

1. сработали три одинарные кавычки :), можете ли вы объяснить мне, почему это сработало?

2. @jyitiska 3 одинарные кавычки или 3 двойные кавычки представляют многострочную строку . Поскольку ваша платежная нагрузка представлена в виде многострочной, если вы используете одинарные одинарные кавычки, компилятор ожидает, что она закончится в той же строке

3. Пожалуйста, примите ответ, нажав на знак галочки спасибо