Интерфейс разработчика
Эта часть документации охватывает все интерфейсы Requests. В частях, где Requests зависит от внешних библиотек, мы документируем самые важные моменты прямо здесь и предоставляем ссылки на каноническую документацию.
Основной интерфейс
Ко всем функциям Requests можно получить доступ через эти 7 методов. Все они возвращают экземпляр объекта Response.
- requests.request(method, url, **kwargs)[source]
-
Создаёт и отправляет
Request.- Параметры
-
-
method – метод для нового объекта
Request:GET,OPTIONS,HEAD,POST,PUT,PATCH, илиDELETE. -
url – URL для нового объекта
Requestобъекта. -
params – (необязательно) Словарь, список кортежей или байты для отправки в строке запроса для
Request. -
data – (необязательно) Словарь, список кортежей, байты или объект типа file-like для отправки в теле
Request. -
json – (необязательно) Объект Python, сериализуемый в JSON, для отправки в теле
Request. -
headers – (необязательно) Словарь HTTP-заголовков для отправки с
Request. -
cookies – (необязательно) Объект Dict или CookieJar для отправки с
Request. -
files – (необязательно) Словарь
'name': file-like-objects(или{'name': file-tuple}) для загрузки с помощью multipart-кодирования.file-tupleможет быть кортежем из 2-х('filename', fileobj), 3-х('filename', fileobj, 'content_type')элементов или 4-х('filename', fileobj, 'content_type', custom_headers), где'content-type'— строка, определяющая тип содержимого заданного файла, аcustom_headers— объект типа dict, содержащий дополнительные заголовки для добавления для файла. - auth – (необязательно) Кортеж авторизации для включения Basic/Digest/Custom HTTP Auth.
- timeout (float или кортеж) – (необязательно) Сколько секунд ждать ответа от сервера, как число с плавающей точкой или кортеж (время ожидания подключения, время ожидания чтения).
-
allow_redirects (bool) – (необязательно) Булево значение. Включить/выключить переадресацию GET/OPTIONS/POST/PUT/PATCH/DELETE/HEAD. По умолчанию
True. - proxies – (необязательно) Словарь, сопоставляющий протокол с URL прокси.
-
verify – (необязательно) Булево значение, контролирует проверку сертификата сервера TLS, или строка — путь к файлу CA bundle для использования. По умолчанию
True. -
stream – (необязательно) если
False, содержимое ответа будет загружено немедленно. - cert – (необязательно) если Строка, путь к файлу ssl клиентского сертификата (.pem). Если Кортеж, пара (‘cert’, ‘key’).
-
method – метод для нового объекта
- Возвращает
-
Объект
Response. - Тип возвращаемого значения
Использование:
>>> import requests >>> req = requests.request('GET', 'https://httpbin.org/get') >>> req <Response [200]>
- requests.head(url, **kwargs)[source]
-
Отправляет запрос HEAD.
- Параметры
- Возвращает
-
Объект
Response. - Тип возвращаемого значения
- requests.get(url, params=None, **kwargs)[source]
-
Отправляет запрос GET.
- Параметры
- Возвращает
-
Объект
Response. - Тип возвращаемого значения
- requests.post(url, data=None, json=None, **kwargs)[source]
-
Отправляет запрос POST.
- Параметры
- Возвращает
-
Объект
Response. - Тип возвращаемого значения
- requests.put(url, data=None, **kwargs)[source]
-
Отправляет запрос PUT.
- Параметры
- Возвращает
-
Объект
Response - Тип возвращаемого значения
- requests.patch(url, data=None, **kwargs)[source]
-
Отправляет запрос PATCH.
- Параметры
- Возвращает
-
Объект
Response - Тип возвращаемого значения
Исключения
- исключение requests.RequestException(*args, **kwargs)[source]
-
Произошло неявное исключение при обработке запроса.
- исключение requests.ConnectionError(*args, **kwargs)[source]
-
Произошла ошибка соединения.
- исключение requests.HTTPError(*args, **kwargs)[source]
-
Произошла ошибка HTTP.
- исключение requests.URLRequired(*args, **kwargs)[source]
-
Для выполнения запроса требуется корректный URL.
- исключение requests.TooManyRedirects(*args, **kwargs)[source]
-
Слишком много редиректов.
- исключение requests.ConnectTimeout(*args, **kwargs)[source]
-
Запрос завис во время попытки соединения с удалённым сервером.
Запросы, которые породили эту ошибку, можно безопасно повторить.
- исключение requests.ReadTimeout(*args, **kwargs)[source]
-
Сервер не передал данные за отведённое время.
- исключение requests.Timeout(*args, **kwargs)[source]
-
Запрос завис.
Перехватив эту ошибку, вы перехватите как
ConnectTimeout, так иReadTimeoutошибки.
Сеансы запросов
- классrequests.Session[source]
-
Сеанс запросов Requests.
Обеспечивает сохранение куки, пул соединений и конфигурацию.
Базовое использование:
>>> import requests >>> s = requests.Session() >>> s.get('https://httpbin.org/get') <Response [200]>Или как менеджер контекста:
>>> with requests.Session() as s: ... s.get('https://httpbin.org/get') <Response [200]>- auth
-
Кортеж или объект аутентификации по умолчанию, который следует прикрепить к
Request.
- cert
-
Сертификат клиента SSL по умолчанию, если строка, путь к файлу сертификата клиента ssl (.pem). Если кортеж, пара (‘cert’, ‘key’).
- close()[source]
-
Закрывает все адаптеры и, таким образом, сеанс
- cookies
-
CookieJar, содержащий все текущие куки, установленные в этом сеансе. По умолчанию это
RequestsCookieJar, но может быть любым другимcookielib.CookieJarсовместимым объектом.
- delete(url, **kwargs)[source]
-
Отправляет запрос DELETE. Возвращает объект
Response.- Параметры
-
-
url – URL для нового объекта
Request. -
**kwargs – Необязательные аргументы, которые принимает
request.
-
url – URL для нового объекта
- Тип возвращаемого значения
- get(url, **kwargs)[source]
-
Отправляет GET запрос. Возвращает объект
Response.- Параметры
-
-
url – URL для нового объекта
Request. -
**kwargs – Необязательные аргументы, которые принимает
request.
-
url – URL для нового объекта
- Тип возвращаемого значения
- get_adapter(url)[source]
-
Возвращает соответствующий адаптер соединения для данного URL.
- Тип возвращаемого значения
- get_redirect_target(resp)
-
Принимает Response. Возвращает URI перенаправления или
None
- head(url, **kwargs)[source]
-
Отправляет запрос HEAD. Возвращает объект
Response.- Параметры
-
-
url – URL для нового объекта
Request. -
**kwargs – Необязательные аргументы, которые принимает
request.
-
url – URL для нового объекта
- Тип возвращаемого значения
- headers
-
Нечувствительный к регистру словарь заголовков, которые будут отправляться с каждым
Requestотправленным от этогоSession.
- hooks
-
Обработчики событий.
- max_redirects
-
Максимальное количество перенаправлений. Если запрос превысит это ограничение, возникает исключение
TooManyRedirects. По умолчанию requests.models.DEFAULT_REDIRECT_LIMIT, которое равно 30.
- merge_environment_settings(url, proxies, stream, verify, cert)[source]
-
Проверяет среду и объединяет её с некоторыми настройками.
- Тип возвращаемого значения
- mount(prefix, adapter)[source]
-
Регистрирует адаптер соединения с префиксом.
Адаптеры упорядочены в порядке убывания длины префикса.
- options(url, **kwargs)[source]
-
Отправляет запрос OPTIONS. Возвращает объект
Response.- Параметры
-
-
url – URL для нового объекта
Request. -
**kwargs – Необязательные аргументы, которые принимает
request.
-
url – URL для нового объекта
- Тип возвращаемого значения
- params
-
Словарь данных строки запроса, которые следует прикрепить к каждому
Request. Значения словаря могут быть списками для представления параметров запроса с несколькими значениями.
- patch(url, data=None, **kwargs)[source]
-
Отправляет запрос PATCH. Возвращает объект
Response.- Параметры
- Тип возвращаемого значения
- post(url, data=None, json=None, **kwargs)[source]
-
Отправляет запрос POST. Возвращает объект
Response.- Параметры
- Тип возвращаемого значения
- prepare_request(request)[source]
-
Создаёт объект
PreparedRequestдля передачи и возвращает его. У объектаPreparedRequestнастройки объединяются из объектаRequestи настроек объектаSession.- Параметры
-
request – Экземпляр
Requestдля подготовки с настройками этого сеанса. - Тип возвращаемого значения
- proxies
-
Словарь, сопоставляющий протокол или протокол и хост с URL прокси-сервера (например, {‘http’: ‘foo.bar:3128’, ‘http://host.name’: ‘foo.bar:4012’}), который будет использоваться для каждого объекта
Request.
- put(url, data=None, **kwargs)[source]
-
Отправляет запрос PUT. Возвращает объект
Response.- Параметры
- Тип возвращаемого значения
- rebuild_auth(prepared_request, response)
-
При перенаправлении мы можем захотеть удалить аутентификацию из запроса, чтобы избежать утечки учетных данных. Этот метод интеллектуально удаляет и повторно применяет аутентификацию, где это возможно, чтобы избежать потери учетных данных.
- rebuild_method(prepared_request, response)
-
При перенаправлении мы можем захотеть изменить метод запроса в зависимости от определённых спецификаций или поведения браузера.
- rebuild_proxies(prepared_request, proxies)
-
Этот метод повторно оценивает конфигурацию прокси, учитывая переменные окружения. Если мы перенаправлены на URL, охваченный NO_PROXY, мы удаляем конфигурацию прокси. В противном случае мы устанавливаем недостающие ключи прокси для этого URL (в случае, если они были удалены предыдущим перенаправлением).
Этот метод также заменяет заголовок Proxy-Authorization при необходимости.
- Тип возвращаемого значения
- request(method, url, params=None, data=None, headers=None, cookies=None, files=None, auth=None, timeout=None, allow_redirects=True, proxies=None, hooks=None, stream=None, verify=None, cert=None, json=None)[source]
-
Создаёт
Request, подготавливает его и отправляет. Возвращает объектResponse.- Параметры
-
-
method – метод для нового объекта
Request. -
url – URL для нового объекта
Request. -
params – (необязательно) Словарь или байты, которые необходимо отправить в строке запроса для
Request. -
data – (необязательно) Словарь, список кортежей, байты или файл-подобный объект для отправки в теле
Request. -
json – (необязательно) json для отправки в теле
Request. -
headers – (необязательно) Словарь HTTP-заголовков для отправки с
Request. -
cookies – (необязательно) Объект Dict или CookieJar для отправки с
Request. -
files – (необязательно) Словарь
'filename': file-like-objectsдля загрузки с помощью многочастной кодировки. - auth – (необязательно) Кортеж или вызываемая функция для включения Basic/Digest/Custom HTTP Auth.
- timeout (float или tuple) – (необязательно) Сколько времени ожидать ответа от сервера, как число с плавающей точкой или кортеж (connect timeout, read timeout).
- allow_redirects (bool) – (необязательно) По умолчанию значение True.
- proxies – (необязательно) Словарь, сопоставляющий протокол или протокол и имя хоста с URL прокси-сервера.
-
stream – (необязательно) нужно ли немедленно загружать содержимое ответа. По умолчанию
False. -
verify – (необязательно) Булево значение, определяющее, нужно ли проверять сертификат TLS сервера, или строка, представляющая путь к файлу с набором доверенных сертификатов. По умолчанию
True. Если verify установлено вFalse, запросы примут любой представленный сервером сертификат TLS и проигнорируют несоответствия имён хостов и/или истекшие сертификаты, что сделает ваше приложение уязвимым к атакам «человек посередине» (MitM). Установка verify вFalseможет быть полезна во время локального тестирования. - cert – (необязательно) если Строка, путь к файлу ssl клиентского сертификата (.pem). Если Кортеж, пара (‘cert’, ‘key’).
-
method – метод для нового объекта
- Тип возвращаемого значения
- resolve_redirects(resp, req, stream=False, timeout=None, verify=True, cert=None, proxies=None, yield_requests=False, **adapter_kwargs)
-
Принимает ответ. Возвращает генератор ответов или запросов.
- send(request, **kwargs)[source]
-
Отправка заданного PreparedRequest.
- Тип возвращаемого значения
- should_strip_auth(old_url, new_url)
-
Определяет, следует ли удалить заголовок Authorization при перенаправлении.
- stream
-
Значение по умолчанию для потоковой передачи содержимого ответа.
- trust_env
-
Доверять настройкам среды для конфигурации прокси, аутентификации и т. п.
- verify
-
Значение по умолчанию для проверки SSL. По умолчанию
True, что требует проверки сертификата TLS на удалённом конце. Если verify установлено вFalse, запросы примут любой представленный сервером сертификат TLS и проигнорируют несоответствия имён хостов и/или истекшие сертификаты, что сделает ваше приложение уязвимым к атакам «человек посередине» (MitM). Устанавливайте это значение только вFalseдля тестирования.
Классы нижнего уровня
- class requests.Request(method=None, url=None, headers=None, files=None, data=None, params=None, auth=None, cookies=None, hooks=None, json=None)[source]
-
Созданный пользователем объект
Request.Используется для подготовки объекта
PreparedRequest, который отправляется на сервер.- Параметры
-
- method – HTTP-метод для использования.
- url – URL для отправки.
- headers – словарь заголовков для отправки.
- files – словарь {имя_файла: файл_объект} для многоадресной загрузки файлов.
-
data – тело для добавления к запросу. Если предоставлен словарь или список кортежей
[(key, value)], будет выполнено кодирование формы. - json – json для тела, добавляемого к запросу (если не указаны файлы или данные).
-
params – параметры URL для добавления к URL. Если предоставлен словарь или список кортежей
[(key, value)], будет выполнено кодирование формы. - auth – обработчик авторизации или кортеж (пользователь, пароль).
- cookies – словарь или CookieJar cookie для добавления к этому запросу.
- hooks – словарь обратных вызовов, для внутреннего использования.
Использование:
>>> import requests >>> req = requests.Request('GET', 'https://httpbin.org/get') >>> req.prepare() <PreparedRequest [GET]>- deregister_hook(event, hook)
-
Дерегистрация ранее зарегистрированного обработчика. Возвращает True, если обработчик существовал, False — если нет.
- prepare()[source]
-
Создает объект
PreparedRequestдля передачи и возвращает его.
- register_hook(event, hook)
-
Правильная регистрация обработчика.
- класс requests.Response[source]
-
Объект
Response, содержащий ответ сервера на HTTP-запрос.- свойство apparent_encoding
-
Явное кодирование, предоставленное библиотеками charset_normalizer или chardet.
- close()[source]
-
Возвращает соединение обратно в пул. После вызова этого метода к базовому объекту
rawбольше нельзя обращаться.Примечание: обычно вызывать явно не нужно.
- свойство content
-
Содержание ответа в байтах.
- cookies
-
Объект CookieJar с куками, отправленными сервером.
- elapsed
-
Время, затраченное между отправкой запроса и получением ответа (как timedelta). Это свойство измеряет время, прошедшее между отправкой первого байта запроса и завершением обработки заголовков. Поэтому оно не зависит от потребления содержимого ответа или значения ключевого аргумента
stream.
- encoding
-
Кодировка для декодирования при доступе к r.text.
- headers
-
Словарь заголовков ответа (регистронезависимый). Например,
headers['content-encoding']вернёт значение заголовка ответа'Content-Encoding'.
- history
-
Список объектов
Responseиз истории запроса. Все ответы перенаправлений будут здесь. Список отсортирован от старых к новым.
- свойство is_permanent_redirect
-
True, если этот ответ — одно из постоянных перенаправлений.
- свойство is_redirect
-
True, если этот ответ — корректное HTTP-перенаправление, которое можно было обработать автоматически (методом
Session.resolve_redirects).
- iter_content(chunk_size=1, decode_unicode=False)[source]
-
Итерируется по данным ответа. Когда stream=True установлено для запроса, это позволяет избежать чтения всего содержимого в память для больших ответов. Размер блока - количество байтов, которые должны быть считаны в память. Это не обязательно длина каждого возвращаемого элемента, так как может происходить декодирование.
chunk_size должен быть типа int или None. Значение None будет работать по-разному в зависимости от значения
stream. stream=True будет считывать данные по мере их поступления в любом размере блоков. Если stream=False, данные возвращаются как единый блок.Если decode_unicode равно True, содержимое будет декодировано с использованием наилучшей доступной кодировки на основе ответа.
- iter_lines(chunk_size=512, decode_unicode=False, delimiter=None)[source]
-
Итерируется по данным ответа, по одной строке за раз. Когда stream=True установлено для запроса, это позволяет избежать чтения всего содержимого в память для больших ответов.
Примечание
Этот метод не является потокобезопасным.
- json(**kwargs)[source]
-
Возвращает закодированное в формате JSON содержимое ответа, если таковое имеется.
- Параметры
-
**kwargs – Дополнительные аргументы, которые
json.loadsпринимает. - Исключения
-
requests.exceptions.JSONDecodeError – Если тело ответа не содержит корректного JSON.
- свойство links
-
Возвращает разобранные ссылки из заголовка ответа, если таковые имеются.
- свойство next
-
Возвращает PreparedRequest для следующего запроса в цепочке перенаправлений, если таковой имеется.
- свойство ok
-
Возвращает True, если
status_codeменьше 400, False — в противном случае.Это свойство проверяет, находится ли код статуса ответа между 400 и 600, чтобы определить, произошла ли ошибка клиента или сервера. Если код статуса находится между 200 и 400, возвращается True. Это не проверка, является ли код ответа
200 OK.
- raise_for_status()[source]
-
Вызывает исключение
HTTPError, если оно произошло.
- raw
-
Представление ответа в виде объекта-подобного файлу (для расширенного использования). Использование
rawтребует, чтобыstream=Trueбыл установлен в запросе. Это требование не применяется для внутреннего использования в Requests.
- reason
-
Текстовое описание кода статуса HTTP ответа, например, “Не найдено” или “ОК”.
- request
-
Объект
PreparedRequest, для которого этот объект является ответом.
- status_code
-
Целочисленный код статуса HTTP ответа, например, 404 или 200.
- свойство text
-
Содержание ответа в unicode.
Если Response.encoding равно None, кодировка будет угадана с помощью
charset_normalizerилиchardet.Кодировка содержимого ответа определяется исключительно на основе заголовков HTTP, в точном соответствии с RFC 2616. Если вы можете использовать не-HTTP информацию, чтобы лучше угадать кодировку, вы должны установить
r.encodingсоответствующим образом перед доступом к этому свойству.
- url
-
Конечный URL местоположение ответа.
Классы нижнего уровня
- класс requests.PreparedRequest[source]
-
Полностью изменяемый
PreparedRequestобъект, содержащий точные байты, которые будут отправлены на сервер.Экземпляры генерируются из объекта
Requestи не должны создаваться вручную; это может привести к нежелательным последствиям.Использование:
>>> import requests >>> req = requests.Request('GET', 'https://httpbin.org/get') >>> r = req.prepare() >>> r <PreparedRequest [GET]> >>> s = requests.Session() >>> s.send(r) <Response [200]>- body
-
Тело запроса для отправки на сервер.
- deregister_hook(event, hook)
-
Отменить регистрацию ранее зарегистрированного обработчика. Возвращает True, если обработчик существовал, False — если нет.
- headers
-
словарь HTTP-заголовков.
- hooks
-
словарь обработчиков обратного вызова, для внутреннего использования.
- method
-
HTTP-глагол для отправки на сервер.
- свойство path_url
-
Создать URL пути для использования.
- prepare(method=None, url=None, headers=None, files=None, data=None, params=None, auth=None, cookies=None, hooks=None, json=None)[source]
-
Подготавливает весь запрос с заданными параметрами.
- prepare_auth(auth, url='')[source]
-
Подготавливает предоставленные данные HTTP-аутентификации.
- класс requests.adapters.BaseAdapter[source]
-
Базовый адаптер транспорта
- close()[source]
-
Очистка элементов, специфичных для адаптера.
- send(request, stream=False, timeout=None, verify=True, cert=None, proxies=None)[source]
-
Отправка объекта PreparedRequest. Возвращает объект Response.
- Параметры
-
-
request – Отправляемый
PreparedRequest. - stream – (необязательно) Нужно ли передавать контент запроса в виде потока.
- timeout (float или кортеж) – (необязательно) Время ожидания получения данных от сервера, как число с плавающей точкой, или кортеж (время ожидания подключения, время ожидания чтения).
- verify – (необязательно) Булево значение, определяющее, нужно ли проверять TLS-сертификат сервера, или строка, в этом случае должна указывать путь к файлу CA-сертификатов.
- cert – (необязательно) Любой предоставленный пользователем SSL-сертификат для проверки.
- proxies – (необязательно) Словарь прокси-серверов для применения к запросу.
-
request – Отправляемый
- класс requests.adapters.HTTPAdapter(pool_connections=10, pool_maxsize=10, max_retries=0, pool_block=False)[source]
-
Встроенный адаптер HTTP для urllib3.
Предоставляет общий интерфейс для сеансов Requests для подключения к HTTP и HTTPS-ссылкам, реализуя интерфейс адаптера транспорта. Этот класс, как правило, создается классом
Sessionв скрытом режиме.- Параметры
-
- pool_connections – Количество кэшируемых пулов соединений urllib3.
- pool_maxsize – Максимальное количество соединений для сохранения в пуле.
-
max_retries – Максимальное количество попыток повторной отправки для каждого соединения. Обратите внимание, что это относится только к ошибкам поиска DNS, сокетов и таймаутам соединения, но не к запросам, данные которых дошли до сервера. По умолчанию Requests не повторяет запросы при ошибках соединения. Если вам нужен точный контроль над условиями повторной отправки запроса, импортируйте класс
Retryиз urllib3 и передайте его вместо этого. - pool_block – Нужно ли блокировать пул соединений при отсутствии свободных соединений.
Использование:
>>> import requests >>> s = requests.Session() >>> a = requests.adapters.HTTPAdapter(max_retries=3) >>> s.mount('http://', a)- add_headers(request, **kwargs)[source]
-
Добавление необходимых заголовков для подключения. Начиная с версии 2.0, по умолчанию это не выполняется, но оставляется для переопределения пользователями, которые создают подклассы
HTTPAdapter.Это не должно вызываться из пользовательского кода и доступно только для использования при создании подклассов
HTTPAdapter.- Параметры
-
-
request –
PreparedRequestдля добавления заголовков. - kwargs – Аргументы ключевых слов из вызова send().
-
request –
- build_response(req, resp)[source]
-
Построение объекта
Responseиз ответа urllib3. Это не должно вызываться из пользовательского кода и доступно только для использования при создании подклассовHTTPAdapter.- Параметры
-
-
req –
PreparedRequest, используемый для получения ответа. - resp – Объект ответа urllib3.
-
req –
- Тип возвращаемого значения
- cert_verify(conn, url, verify, cert)[source]
-
Проверка SSL-сертификата. Этот метод не должен вызываться из пользовательского кода и доступен только для использования при создании подклассов
HTTPAdapter.- Параметры
-
- conn – Объект соединения urllib3, связанный с сертификатом.
- url – Запрашиваемый URL.
- verify – Булево значение, контролирующее проверку TLS-сертификата сервера, или строка, представляющая путь к файлу с набором доверенных сертификатов CA.
- cert – SSL-сертификат для проверки.
- close()[source]
-
Удаляет все внутреннее состояние.
В настоящее время это закрывает PoolManager и любой активный ProxyManager, что закрывает все подключенные соединения.
- get_connection(url, proxies=None)[source]
-
Возвращает объект подключения urllib3 для заданного URL. Этот метод не должен вызываться из пользовательского кода, и доступен только для использования при создании подклассов
HTTPAdapter.- Параметры
-
- url – URL для подключения.
- proxies – (необязательно) Словарь прокси в формате Requests, используемый в этом запросе.
- Тип возвращаемого значения
-
urllib3.ConnectionPool
- init_poolmanager(connections, maxsize, block=False, **pool_kwargs)[source]
-
Инициализация urllib3 PoolManager.
Этот метод не должен вызываться из пользовательского кода, и доступен только для использования при создании подклассов
HTTPAdapter.- Параметры
-
- connections – Количество кэшируемых пулов соединений urllib3.
- maxsize – Максимальное количество соединений для сохранения в пуле.
- block – Блокировать при отсутствии свободных соединений.
- pool_kwargs – Дополнительные аргументы ключевых слов, используемые для инициализации PoolManager.
- proxy_headers(proxy)[source]
-
Возвращает словарь заголовков, которые нужно добавить к любому запросу, отправленному через прокси. Это работает с магией urllib3, чтобы гарантировать, что они отправляются прокси, а не в туннелированном запросе, если используется CONNECT.
Этот метод не должен вызываться из пользовательского кода и доступен только для использования при создании подклассов
HTTPAdapter.- Параметры
-
proxy – URL прокси, используемого для этого запроса.
- Тип возвращаемого значения
- proxy_manager_for(proxy, **proxy_kwargs)[source]
-
Возвращает urllib3 ProxyManager для данного прокси.
Этот метод не должен вызываться из пользовательского кода и доступен только для использования при создании подклассов
HTTPAdapter.- Параметры
-
- proxy – Прокси, для которого нужно вернуть urllib3 ProxyManager.
- proxy_kwargs – Дополнительные аргументы ключевых слов для настройки ProxyManager.
- Возвращаемое значение
-
ProxyManager
- Тип возвращаемого значения
- request_url(request, proxies)[source]
-
Получение URL для отправки конечного запроса.
Если сообщение отправляется через HTTP-прокси, необходимо использовать полный URL. В противном случае следует использовать только путь URL.
Этот метод не предназначен для вызова из пользовательского кода и доступен только для использования при наследовании от
HTTPAdapter.- Параметры
-
-
request – Отправляемый
PreparedRequest. - proxies – Словарь схем или схем и хостов для прокси-серверов URL.
-
request – Отправляемый
- Тип возвращаемого значения
- send(request, stream=False, timeout=None, verify=True, cert=None, proxies=None)[source]
-
Отправка объекта PreparedRequest. Возвращает объект Response.
- Параметры
-
-
request – Отправляемый
PreparedRequest. - stream – (необязательно) Потоковая передача содержимого запроса.
- timeout (float или tuple или объект Timeout urllib3) – (необязательно) Время ожидания отправки данных сервером, как число с плавающей точкой или кортеж (время ожидания подключения, время ожидания чтения).
- verify – (необязательно) Булево значение, определяющее проверку сертификата TLS сервера, или строка, представляющая путь к файлу сертификата CA.
- cert – (необязательно) Любой предоставленный пользователем SSL-сертификат для проверки.
- proxies – (необязательно) Словарь прокси для применения к запросу.
-
request – Отправляемый
- Тип возвращаемого значения
Аутентификация
- class requests.auth.AuthBase[source]
-
Базовый класс, от которого наследуются все реализации аутентификации
- class requests.auth.HTTPBasicAuth(username, password)[source]
-
Присоединяет HTTP Basic аутентификацию к заданному объекту Request.
- class requests.auth.HTTPProxyAuth(username, password)[source]
-
Присоединяет HTTP Proxy аутентификацию к заданному объекту Request.
- class requests.auth.HTTPDigestAuth(username, password)[source]
-
Присоединяет HTTP Digest аутентификацию к заданному объекту Request.
Кодировки
- requests.utils.get_encodings_from_content(content)[source]
-
Возвращает кодировки из заданной строки контента.
- Параметры
-
content – байтовая строка для извлечения кодировок.
- requests.utils.get_encoding_from_headers(headers)[source]
-
Возвращает кодировки из заданного словаря HTTP заголовков.
- Параметры
-
headers – словарь для извлечения кодировки.
- Тип возвращаемого значения
- requests.utils.get_unicode_from_response(r)[source]
-
Возвращает запрашиваемое содержимое в кодировке Unicode.
- Параметры
-
r – Объект Response для получения кодированного содержимого.
Попытки:
- получить charset из content-type
- fallback и замена всех символов unicode
- Тип возвращаемого значения
Поиск кодов состояния
- requests.codes
-
псевдоним для <поискового словаря ‘status_codes’>
Объект codes определяет отображение распространённых имён HTTP-состояний на их числовые коды, к которым можно получить доступ как к атрибутам, так и как к элементам словаря.
Пример:
>>> import requests >>> requests.codes['temporary_redirect'] 307 >>> requests.codes.teapot 418 >>> requests.codes['\o/'] 200
Некоторые коды имеют несколько имён, и допускаются как прописные, так и строчные версии имён. Например, codes.ok, codes.OK, и codes.okay все соответствуют коду HTTP-состояния 200.
- 100:
continue - 101:
switching_protocols - 102:
processing - 103:
checkpoint - 122:
uri_too_long,request_uri_too_long - 200:
ok,okay,all_ok,all_okay,all_good,\o/,✓ - 201:
created - 202:
accepted - 203:
non_authoritative_info,non_authoritative_information - 204:
no_content - 205:
reset_content,reset - 206:
partial_content,partial - 207:
multi_status,multiple_status,multi_stati,multiple_stati - 208:
already_reported - 226:
im_used - 300:
multiple_choices - 301:
moved_permanently,moved,\o- - 302:
found - 303:
see_other,other - 304:
not_modified - 305:
use_proxy - 306:
switch_proxy - 307:
temporary_redirect,temporary_moved,temporary - 308:
permanent_redirect,resume_incomplete,resume - 400:
bad_request,bad - 401:
unauthorized - 402:
payment_required,payment - 403:
forbidden - 404:
not_found,-o- - 405:
method_not_allowed,not_allowed - 406:
not_acceptable - 407:
proxy_authentication_required,proxy_auth,proxy_authentication - 408:
request_timeout,timeout - 409:
conflict - 410:
gone - 411:
length_required - 412:
precondition_failed,precondition - 413:
request_entity_too_large - 414:
request_uri_too_large - 415:
unsupported_media_type,unsupported_media,media_type - 416:
requested_range_not_satisfiable,requested_range,range_not_satisfiable - 417:
expectation_failed - 418:
im_a_teapot,teapot,i_am_a_teapot - 421:
misdirected_request - 422:
unprocessable_entity,unprocessable - 423:
locked - 424:
failed_dependency,dependency - 425:
unordered_collection,unordered - 426:
upgrade_required,upgrade - 428:
precondition_required,precondition - 429:
too_many_requests,too_many - 431:
header_fields_too_large,fields_too_large - 444:
no_response,none - 449:
retry_with,retry - 450:
blocked_by_windows_parental_controls,parental_controls - 451:
unavailable_for_legal_reasons,legal_reasons - 499:
client_closed_request - 500:
internal_server_error,server_error,/o\,✗ - 501:
not_implemented - 502:
bad_gateway - 503:
service_unavailable,unavailable - 504:
gateway_timeout - 505:
http_version_not_supported,http_version - 506:
variant_also_negotiates - 507:
insufficient_storage - 509:
bandwidth_limit_exceeded,bandwidth - 510:
not_extended - 511:
network_authentication_required,network_auth,network_authentication
Миграция на 1.x
В этом разделе подробно описаны основные различия между версиями 0.x и 1.x, чтобы облегчить процесс обновления.
Изменения в API
-
Response.jsonтеперь является вызываемым объектом, а не свойством ответа.import requests r = requests.get('https://api.github.com/events') r.json() # This *call* raises an exception if JSON decoding fails -
API
Sessionизменился. Объекты сессий больше не принимают параметры.Sessionтакже теперь записывается с большой буквы, но его всё ещё можно создавать с маленькойsession, чтобы обеспечить обратную совместимость.s = requests.Session() # formerly, session took parameters s.auth = auth s.headers.update(headers) r = s.get('https://httpbin.org/headers') - Все обработчики запросов, кроме ‘response’, были удалены.
- Вспомогательные функции аутентификации были разделены на отдельные модули. Смотрите requests-oauthlib и requests-kerberos.
-
Параметр для потоковых запросов был изменён с
prefetchнаstream, и логика была инвертирована. Кроме того,streamтеперь требуется для чтения исходного ответа.# in 0.x, passing prefetch=False would accomplish the same thing r = requests.get('https://api.github.com/events', stream=True) for chunk in r.iter_content(8192): ... -
Параметр
configдля метода запроса был удален. Некоторые из этих опций теперь настраиваются на уровнеSession, например, keep-alive и максимальное количество перенаправлений. Параметр verbosity следует настраивать через логирование.import requests import logging # Enabling debugging at http.client level (requests->urllib3->http.client) # you will see the REQUEST, including HEADERS and DATA, and RESPONSE with HEADERS but without DATA. # the only thing missing will be the response.body which is not logged. try: # for Python 3 from http.client import HTTPConnection except ImportError: from httplib import HTTPConnection HTTPConnection.debuglevel = 1 logging.basicConfig() # you need to initialize logging, otherwise you will not see anything from requests logging.getLogger().setLevel(logging.DEBUG) requests_log = logging.getLogger("urllib3") requests_log.setLevel(logging.DEBUG) requests_log.propagate = True requests.get('https://httpbin.org/headers')
Лицензирование
Одно важное отличие, не связанное с API, — это смена лицензии с ISC на Apache 2.0. Лицензия Apache 2.0 гарантирует, что все внесённые в Requests изменения также покрываются лицензией Apache 2.0.
Миграция на 2.x
По сравнению с релизом 1.0, несовместимых с прошлыми версиями изменений было относительно мало, но с этим крупным релизом всё же стоит учитывать несколько моментов.
Для получения более подробной информации об изменениях в этом релизе, включая новые API, ссылки на соответствующие проблемы на GitHub и некоторые исправления ошибок, прочитайте блог Кори на эту тему.
Изменения в API
-
Были внесены некоторые изменения в обработку исключений в Requests.
RequestExceptionтеперь является подклассомIOError, а неRuntimeError, поскольку это более точно отражает тип ошибки. Кроме того, некорректная последовательность URL-экранирования теперь вызывает подклассRequestException, а неValueError.requests.get('http://%zz/') # raises requests.exceptions.InvalidURLНаконец, исключения
httplib.IncompleteRead, вызванные неправильной кодировкой chunked, теперь будут генерировать исключение RequestsChunkedEncodingError. -
API прокси немного изменился. Теперь требуется схема для URL-адреса прокси.
proxies = { "http": "10.10.1.10:3128", # use http://10.10.1.10:3128 instead } # In requests 1.x, this was legal, in requests 2.x, # this raises requests.exceptions.MissingSchema requests.get("http://example.org", proxies=proxies)
Изменения в поведении
- Ключи в словаре
headersтеперь являются строками в чистом виде на всех версиях Python, то есть байтовыми строками в Python 2 и строками Unicode в Python 3. Если ключи не являются чистыми строками (Unicode в Python 2 или байтовые строки в Python 3), они будут преобразованы в тип чистой строки с предположением кодировки UTF-8. - Значения в словаре
headersвсегда должны быть строками. Это положение проекта действовало ещё до версии 1.0, а недавнее изменение (с версии 2.11.0) делает это требование более жёстким. Рекомендуется по возможности избегать передачи значений заголовков в формате Unicode.
© 2011-2022 Kenneth Reitz and other contributors
Licensed under the Apache license.
https://requests.readthedocs.io/en/latest/api/index.html