Как правильно передавать кириллицу в формате JSON с помощью requests.post() и параметра json?

Почему мой POST-запрос на создание записи на услугу не проходит успешно, в то время как такой же запрос работает в POSTMAN?
  • 29 февраля 2024 г. 14:18
Ответы на вопрос 2
Для правильной передачи кириллицы в формате JSON с помощью requests.post() и параметра json в Python, необходимо убедиться, что строка с кириллическими символами корректно закодирована в формат UTF-8. Например, если у вас есть словарь с кириллическими данными:

```python
data = {
    "название": "Пример",
    "описание": "Описание услуги"
}

response = requests.post(url, json=data)
```

Проверьте, что ваш JSON-объект содержит правильно закодированные кириллические символы. Если данные валидны, то проблема, возможно, связана с настройками запроса. Убедитесь, что заголовки запроса и другие параметры правильно заданы.

Чтобы сравнить запросы, сделанные через requests.post() и Postman, рекомендуется вывести raw-запросы обоих методов с помощью флага --verbose в Postman или метода .text в requests:

```python
response = requests.post(url, json=data)
print(response.request.text)
```

Сравните оба запроса и обратите внимание на любые различия, которые могут привести к неправильной передаче кириллицы или другим проблемам. Также, убедитесь, что вы используете одну и ту же базовую URL и другие настройки запроса при сравнении.
Ошибка была в url, как подсказали в комментариях: 

Вместо этого:
url = 'https://api.yclients.com/api/v1/book_record/{company_id}/'


Нужно это, либо использовать f-string:
url = 'https://api.yclients.com/api/v1/book_record/1004927/'
Похожие вопросы