Подтвердить что ты не робот

Разница между "данными" и "параметрами" в запросах Python?

Мне было любопытно, какая разница между параметром data и параметром params в запросе python-requests и когда каждый из них должен использоваться.

Один пример: у меня есть массив dicts users=[{"email_hash": "fh7834uifre8houi3f"}, ... ], и я пытаюсь сделать POST (requests.post()) с помощью

params = {
    "ads_token": blah blah,
    "user_id": blah blah,
    "users": json.dumps(users)  # users=[{"email_hash": "fh7834uifre8houi3f"}, ... ]
    "hash_type": "md5"
}

и потому что users составляет несколько сотен длин, итоговая строка из json.dumps(users) (и, следовательно, сам URL-адрес) очень длинная, и я получаю ошибку {'status_code': 414, 'reason': 'Request-URI Too Large'}. Это будет случай для data, или есть какой-то другой путь, которому я должен следовать? Спасибо!

4b9b3361

Ответ 1

params сформируйте строку запроса в URL, data используется для заполнения тела запроса (вместе с files). GET и HEAD не имеют тела.

Для большинства серверов, принимающих запрос POST, ожидается, что данные будут переданы в качестве тела запроса.

Вам нужно проконсультироваться с документацией по конкретному API, который вы вызываете, к ожидаемому, но если вы предполагаете, предположите, что вам нужно использовать data.