Spec-Zone.ru › Requests

Интерфейс разработчика

В этой части документации описаны все интерфейсы Requests. Для тех случаев, когда Requests зависит от внешних библиотек, здесь приведены сведения о наиболее важных из них и ссылки на официальную документацию.

Основной интерфейс

Доступ ко всем функциям Requests можно получить с помощью этих 7 методов. Каждый из них возвращает экземпляр объекта Response.

requests.request(method:str, url:_t.UriType, **kwargs:Unpack[_t.RequestKwargs]) → Response[исходный код]

Создаёт и отправляет Request.

Параметры:
  • method – метод для нового объекта Request: GET, OPTIONS, HEAD, POST, PUT, PATCH или DELETE.
  • url – URL для нового объекта Request.
  • params – (необязательно) Словарь, список кортежей или байты для передачи в строке запроса Request.
  • data – (необязательно) Словарь, список кортежей, байты или файловый объект для передачи в теле Request.
  • json – (необязательно) Объект Python, сериализуемый в JSON, для передачи в теле Request.
  • headers – (необязательно) Словарь заголовков HTTP, передаваемых с Request.
  • cookies – (необязательно) Словарь или объект 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 — объект, подобный словарю, содержащий дополнительные заголовки для файла.
  • auth – (необязательно) Кортеж аутентификации для включения базовой, дайджест-аутентификации или пользовательской HTTP-аутентификации.
  • timeout (float или tuple) – (необязательно) Сколько секунд ожидать отправки данных сервером, прежде чем прекратить ожидание; задаётся числом с плавающей точкой или кортежем (тайм-аут подключения, тайм-аут чтения).
  • allow_redirects (bool) – (необязательно) Логическое значение. Включает или отключает перенаправления GET/OPTIONS/POST/PUT/PATCH/DELETE/HEAD. По умолчанию True.
  • proxies – (необязательно) Словарь, сопоставляющий протокол с URL прокси-сервера.
  • verify – (необязательно) Логическое значение, определяющее, проверять ли TLS-сертификат сервера, либо строка — путь к используемому пакету сертификатов CA. По умолчанию True.
  • stream – (необязательно) Если False, содержимое ответа будет загружено немедленно.
  • cert – (необязательно) Если строка — путь к файлу сертификата клиента SSL (.pem). Если кортеж — пара (‘cert’, ‘key’).
Возвращает:

Объект Response

Тип возвращаемого значения:

requests.Response

Использование:

>>> import requests
>>> req = requests.request('GET', 'https://httpbin.org/get')
>>> req
<Response [200]>
requests.head(url:_t.UriType, **kwargs:Unpack[_t.RequestKwargs]) → Response[исходный код]

Отправляет запрос HEAD.

Параметры:
  • url – URL для нового объекта Request.
  • **kwargs – Необязательные аргументы, принимаемые методом request. Если allow_redirects не задан, ему будет присвоено значение False (в отличие от поведения по умолчанию метода request).
Возвращает:

Объект Response

Тип возвращаемого значения:

requests.Response

requests.get(url:_t.UriType, params:_t.ParamsType=None, **kwargs:Unpack[_t.GetKwargs]) → Response[исходный код]

Отправляет запрос GET.

Параметры:
  • url – URL для нового объекта Request.
  • params – (необязательно) Словарь, список кортежей или байты для передачи в строке запроса Request.
  • **kwargs – Необязательные аргументы, принимаемые методом request.
Возвращает:

Объект Response

Тип возвращаемого значения:

requests.Response

requests.post(url:_t.UriType, data:_t.DataType=None, json:_t.JsonType=None, **kwargs:Unpack[_t.PostKwargs]) → Response[исходный код]

Отправляет запрос POST.

Параметры:
  • url – URL для нового объекта Request.
  • data – (необязательно) Словарь, список кортежей, байты или файловый объект для передачи в теле Request.
  • json – (необязательно) Объект Python, сериализуемый в JSON, для передачи в теле Request.
  • **kwargs – Необязательные аргументы, принимаемые методом request.
Возвращает:

Объект Response

Тип возвращаемого значения:

requests.Response

requests.put(url:_t.UriType, data:_t.DataType=None, **kwargs:Unpack[_t.DataKwargs]) → Response[исходный код]

Отправляет запрос PUT.

Параметры:
  • url – URL для нового объекта Request.
  • data – (необязательно) Словарь, список кортежей, байты или файловый объект для передачи в теле Request.
  • json – (необязательно) Объект Python, сериализуемый в JSON, для передачи в теле Request.
  • **kwargs – Необязательные аргументы, принимаемые методом request.
Возвращает:

Объект Response

Тип возвращаемого значения:

requests.Response

requests.patch(url:_t.UriType, data:_t.DataType=None, **kwargs:Unpack[_t.DataKwargs]) → Response[исходный код]

Отправляет запрос PATCH.

Параметры:
  • url – URL для нового объекта Request.
  • data – (необязательно) Словарь, список кортежей, байты или файловый объект для передачи в теле Request.
  • json – (необязательно) Объект Python, сериализуемый в JSON, для передачи в теле Request.
  • **kwargs – Необязательные аргументы, принимаемые методом request.
Возвращает:

Объект Response

Тип возвращаемого значения:

requests.Response

requests.delete(url:_t.UriType, **kwargs:Unpack[_t.RequestKwargs]) → Response[исходный код]

Отправляет запрос DELETE.

Параметры:
  • url – URL для нового объекта Request.
  • **kwargs – Необязательные аргументы, принимаемые методом request.
Возвращает:

Объект Response

Тип возвращаемого значения:

requests.Response

Исключения

exceptionrequests.RequestException(*args:Any, **kwargs:Any)[исходный код]

При обработке запроса возникло неоднозначное исключение.

exceptionrequests.ConnectionError(*args:Any, **kwargs:Any)[исходный код]

Произошла ошибка соединения.

exceptionrequests.HTTPError(*args:Any, **kwargs:Any)[исходный код]

Произошла ошибка HTTP.

exceptionrequests.TooManyRedirects(*args:Any, **kwargs:Any)[исходный код]

Слишком много перенаправлений.

exceptionrequests.ConnectTimeout(*args:Any, **kwargs:Any)[исходный код]

Время ожидания запроса истекло при попытке подключения к удалённому серверу.

Запросы, вызвавшие эту ошибку, безопасно отправлять повторно.

exceptionrequests.ReadTimeout(*args:Any, **kwargs:Any)[исходный код]

Сервер не отправил данные за отведённое время.

exceptionrequests.Timeout(*args:Any, **kwargs:Any)[исходный код]

Время ожидания запроса истекло.

Перехват этой ошибки позволяет перехватить как ошибки ConnectTimeout, так и ошибки ReadTimeout.

exceptionrequests.JSONDecodeError(*args:Any, **kwargs:Any)[исходный код]

Не удалось декодировать текст в JSON

Сеансы Request

classrequests.Session[исходный код]

Сеанс Requests.

Обеспечивает сохранение файлов cookie, пул соединений и настройку.

Базовое использование:

>>> 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:_t.AuthType

Кортеж или объект аутентификации по умолчанию, добавляемый к Request.

cert:_t.CertType

Сертификат SSL-клиента по умолчанию: если это строка, то путь к файлу сертификата SSL-клиента (.pem). Если кортеж — пара (‘cert’, ‘key’).

close() → None[исходный код]

Закрывает все адаптеры и, следовательно, сеанс.

cookies:RequestsCookieJar

Объект CookieJar, содержащий все активные файлы cookie, установленные в этом сеансе. По умолчанию это RequestsCookieJar, но может быть любым другим совместимым объектом cookielib.CookieJar.

delete(url:_t.UriType, **kwargs:Unpack[_t.RequestKwargs]) → Response[исходный код]

Отправляет запрос DELETE. Возвращает объект Response.

Параметры:
  • url – URL для нового объекта Request.
  • **kwargs – Необязательные аргументы, которые принимает request.
Тип возвращаемого значения:

requests.Response

get(url:_t.UriType, params:_t.ParamsType=None, **kwargs:Unpack[_t.GetKwargs]) → Response[исходный код]

Отправляет запрос GET. Возвращает объект Response.

Параметры:
  • url – URL для нового объекта Request.
  • params – (необязательно) словарь, список кортежей или байты для передачи в строке запроса Request.
  • **kwargs – Необязательные аргументы, которые принимает request.
Тип возвращаемого значения:

requests.Response

get_adapter(url:str) → BaseAdapter[исходный код]

Возвращает подходящий адаптер соединения для указанного URL.

Тип возвращаемого значения:

requests.adapters.BaseAdapter

get_redirect_target(resp:Response) → str|None

Получает объект Response. Возвращает URI перенаправления или None

head(url:_t.UriType, **kwargs:Unpack[_t.RequestKwargs]) → Response[исходный код]

Отправляет запрос HEAD. Возвращает объект Response.

Параметры:
  • url – URL для нового объекта Request.
  • **kwargs – Необязательные аргументы, которые принимает request.
Тип возвращаемого значения:

requests.Response

headers:CaseInsensitiveDict[str]

Словарь заголовков без учета регистра, отправляемых с каждым запросом Request, отправленным из этого сеанса Session.

hooks:dict[str,list[_t.HookType]]

Обработчики событий.

max_redirects:int

Максимальное допустимое количество перенаправлений. Если запрос превышает это ограничение, возникает исключение TooManyRedirects. По умолчанию используется requests.models.DEFAULT_REDIRECT_LIMIT, равный 30.

merge_environment_settings(url:str, proxies:dict[str,str]|None, stream:bool|None, verify:_t.VerifyType|None, cert:_t.CertType) → dict[str,Any][исходный код]

Проверяет настройки окружения и объединяет их с некоторыми параметрами.

Тип возвращаемого значения:

dict

mount(prefix:str, adapter:BaseAdapter) → None[исходный код]

Регистрирует адаптер соединения для префикса.

Адаптеры сортируются по убыванию длины префикса.

options(url:_t.UriType, **kwargs:Unpack[_t.RequestKwargs]) → Response[исходный код]

Отправляет запрос OPTIONS. Возвращает объект Response.

Параметры:
  • url – URL для нового объекта Request.
  • **kwargs – Необязательные аргументы, которые принимает request.
Тип возвращаемого значения:

requests.Response

params:MutableMapping[str,Any]

Словарь данных строки запроса, добавляемых к каждому Request. Значениями словаря могут быть списки, представляющие параметры запроса с несколькими значениями.

patch(url:_t.UriType, data:_t.DataType=None, **kwargs:Unpack[_t.DataKwargs]) → Response[исходный код]

Отправляет запрос PATCH. Возвращает объект Response.

Параметры:
  • url – URL для нового объекта Request.
  • data – (необязательно) словарь, список кортежей, байты или файловый объект для передачи в теле Request.
  • **kwargs – Необязательные аргументы, которые принимает request.
Тип возвращаемого значения:

requests.Response

post(url:_t.UriType, data:_t.DataType=None, json:_t.JsonType=None, **kwargs:Unpack[_t.PostKwargs]) → Response[исходный код]

Отправляет запрос POST. Возвращает объект Response.

Параметры:
  • url – URL для нового объекта Request.
  • data – (необязательно) словарь, список кортежей, байты или файловый объект для передачи в теле Request.
  • json – (необязательно) данные JSON для передачи в теле Request.
  • **kwargs – Необязательные аргументы, которые принимает request.
Тип возвращаемого значения:

requests.Response

prepare_request(request:Request) → PreparedRequest[исходный код]

Создает PreparedRequest для отправки и возвращает его. Параметры PreparedRequest объединяются с параметрами экземпляра Request и параметрами Session.

Параметры:

request – экземпляр Request, который нужно подготовить с параметрами этого сеанса.

Тип возвращаемого значения:

requests.PreparedRequest

proxies:dict[str,str]

Словарь, сопоставляющий протокол или протокол и узел с URL прокси-сервера (например, {‘http’: ‘foo.bar:3128’, ‘http://host.name’: ‘foo.bar:4012’}), используемого для каждого Request.

put(url:_t.UriType, data:_t.DataType=None, **kwargs:Unpack[_t.DataKwargs]) → Response[исходный код]

Отправляет запрос PUT. Возвращает объект Response.

Параметры:
  • url – URL для нового объекта Request.
  • data – (необязательно) словарь, список кортежей, байты или файловый объект для передачи в теле Request.
  • **kwargs – Необязательные аргументы, которые принимает request.
Тип возвращаемого значения:

requests.Response

rebuild_auth(prepared_request:PreparedRequest, response:Response) → None

При перенаправлении может потребоваться удалить данные аутентификации из запроса, чтобы не допустить утечки учетных данных. Этот метод интеллектуально удаляет и повторно применяет аутентификацию, когда это возможно, чтобы избежать потери учетных данных.

rebuild_method(prepared_request:PreparedRequest, response:Response) → None

При перенаправлении может потребоваться изменить метод запроса в соответствии с определенными спецификациями или поведением браузера.

rebuild_proxies(prepared_request:PreparedRequest, proxies:dict[str,str]|None) → dict[str,str]

Этот метод повторно оценивает конфигурацию прокси с учётом переменных среды. Если выполняется перенаправление на URL, указанный в NO_PROXY, конфигурация прокси удаляется. В противном случае для этого URL задаются отсутствующие ключи прокси (на случай, если они были удалены при предыдущем перенаправлении).

При необходимости этот метод также заменяет заголовок Proxy-Authorization.

Тип возвращаемого значения:

dict

request(method:str, url:_t.UriType, params:_t.ParamsType=None, data:_t.DataType=None, headers:_t.HeadersType=None, cookies:RequestsCookieJar|CookieJar|dict[str,str]|None=None, files:_t.FilesType=None, auth:_t.AuthType=None, timeout:_t.TimeoutType=None, allow_redirects:bool=True, proxies:dict[str,str]|None=None, hooks:_t.HooksInputType|None=None, stream:bool|None=None, verify:_t.VerifyType|None=None, cert:_t.CertType=None, json:_t.JsonType=None) → Response[исходный код]

Создаёт Request, подготавливает его и отправляет. Возвращает объект Response.

Параметры:
  • method – метод для нового объекта Request.
  • url – URL для нового объекта Request.
  • params – (необязательно) Словарь или байты, передаваемые в строке запроса для Request.
  • data – (необязательно) Словарь, список кортежей, байты или файловый объект, передаваемый в теле Request.
  • json – (необязательно) JSON, передаваемый в теле Request.
  • headers – (необязательно) Словарь HTTP-заголовков, передаваемых вместе с Request.
  • cookies – (необязательно) Словарь или объект CookieJar, передаваемый вместе с Request.
  • files – (необязательно) Словарь с 'filename': file-like-objects для загрузки с кодированием multipart.
  • auth – (необязательно) Кортеж для аутентификации или вызываемый объект для включения базовой, дайджест-аутентификации или пользовательской HTTP-аутентификации.
  • timeout (float или tuple) – (необязательно) Время ожидания данных от сервера в секундах до прекращения ожидания: число с плавающей точкой или кортеж (тайм-аут подключения, тайм-аут чтения).
  • allow_redirects (bool) – (необязательно) По умолчанию имеет значение True.
  • proxies – (необязательно) Словарь, сопоставляющий протокол или протокол и имя хоста с URL прокси-сервера.
  • hooks – (необязательно) Словарь, сопоставляющий имя обработчика с одним или несколькими событиями; обработчик события должен быть вызываемым объектом.
  • stream – (необязательно) следует ли сразу загружать содержимое ответа. По умолчанию False.
  • verify – (необязательно) Логическое значение, определяющее, проверять ли TLS-сертификат сервера, или строка с путём к используемому пакету сертификатов центра сертификации. По умолчанию True. Если задано значение False, requests принимает любой TLS-сертификат, предоставленный сервером, и игнорирует несовпадения имени хоста и/или истёкшие сертификаты, что делает приложение уязвимым для атак типа «человек посередине» (MitM). Значение False может быть полезно при локальной разработке или тестировании.
  • cert – (необязательно) Если указана строка, это путь к файлу клиентского SSL-сертификата (.pem). Если указан кортеж, это пара (‘cert’, ‘key’).
Тип возвращаемого значения:

requests.Response

resolve_redirects(resp:Response, req:PreparedRequest, stream:bool=False, timeout:_t.TimeoutType=None, verify:_t.VerifyType=True, cert:_t.CertType=None, proxies:dict[str,str]|None=None, yield_requests:bool=False, **adapter_kwargs:Any) → Generator[Response,None,None]

Получает Response. Возвращает генератор объектов Response или Request.

send(request:PreparedRequest, **kwargs:Any) → Response[исходный код]

Отправляет заданный PreparedRequest.

Тип возвращаемого значения:

requests.Response

should_strip_auth(old_url:str, new_url:str) → bool

Определяет, следует ли удалять заголовок Authorization при перенаправлении

stream:bool

Значение по умолчанию для потоковой передачи содержимого ответа.

trust_env:bool

Доверять настройкам среды для конфигурации прокси, аутентификации по умолчанию и других подобных параметров.

verify:_t.VerifyType

Проверка SSL по умолчанию. По умолчанию True; requests проверяет TLS-сертификат удалённой стороны. Если для verify задано значение False, requests принимает любой TLS-сертификат, предоставленный сервером, и игнорирует несовпадения имени хоста и/или истёкшие сертификаты, что делает приложение уязвимым для атак типа «человек посередине» (MitM). Устанавливайте значение False только для тестирования. Если для verify задана строка, она должна содержать путь к файлу с пакетом сертификатов центра сертификации, который будет использоваться для проверки TLS-сертификата.

Классы нижнего уровня

classrequests.Request(method:str|None=None, url:_t.UriType|None=None, headers:_t.HeadersType=None, files:_t.FilesType=None, data:_t.DataType=None, params:_t.ParamsType=None, auth:_t.AuthType=None, cookies:RequestsCookieJar|CookieJar|dict[str,str]|None=None, hooks:_t.HooksInputType|None=None, json:_t.JsonType=None)[исходный код]

Объект Request, созданный пользователем.

Используется для подготовки PreparedRequest, который отправляется на сервер.

Параметры:
  • method – используемый метод HTTP.
  • url – URL для отправки.
  • headers – словарь заголовков для отправки.
  • files – словарь файлов {имя_файла: файловый_объект} для отправки в формате multipart.
  • data – тело запроса. Если передан словарь или список кортежей [(key, value)], данные будут закодированы как форма.
  • json – данные JSON для тела запроса (если не указаны files или data).
  • 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:str, hook:Callable[[Response],Any]) → bool

Отменяет регистрацию ранее зарегистрированного хука. Возвращает True, если хук существовал, и False в противном случае.

prepare() → PreparedRequest[исходный код]

Создает PreparedRequest для отправки и возвращает его.

register_hook(event:str, hook:Iterable[Callable[[Response],Any]]|Callable[[Response],Any]) → None

Корректно регистрирует хук.

classrequests.Response[исходный код]

Объект Response, содержащий ответ сервера на HTTP-запрос.

propertyapparent_encoding:str|None

Предполагаемая кодировка, определенная библиотеками charset_normalizer или chardet.

close() → None[исходный код]

Возвращает соединение в пул. После вызова этого метода к лежащему в его основе объекту raw больше нельзя обращаться.

Примечание: Обычно нет необходимости вызывать этот метод явно.

propertycontent:bytes

Содержимое ответа в виде байтов.

cookies:RequestsCookieJar

Объект CookieJar с файлами cookie, полученными от сервера.

elapsed:datetime.timedelta

Время, прошедшее между отправкой запроса и получением ответа (в виде timedelta). Это свойство измеряет именно время между отправкой первого байта запроса и завершением разбора заголовков. Поэтому на него не влияют ни получение содержимого ответа, ни значение аргумента-ключевого слова stream.

encoding:str|None

Кодировка для декодирования при обращении к r.text.

headers:CaseInsensitiveDict[str]

Словарь заголовков ответа без учета регистра. Например, headers['content-encoding'] вернет значение заголовка ответа 'Content-Encoding'.

history:list[Response]

Список объектов Response из истории запроса. Здесь будут находиться все ответы перенаправления. Список упорядочен от самого старого запроса к самому последнему.

propertyis_redirect:bool

True, если этот Response представляет собой корректно сформированный HTTP-ответ перенаправления, который мог быть обработан автоматически (методом Session.resolve_redirects).

iter_content(chunk_size:int|None=1, decode_unicode:Literal[False]=False) → Iterator[bytes][исходный код]
iter_content(chunk_size:int|None=1, *, decode_unicode:Literal[True]) → Iterator[str|bytes]

Перебирает данные ответа. Если для запроса задано stream=True, этот метод позволяет не загружать все содержимое больших ответов в память сразу. Размер фрагмента — это количество байтов, которое следует загрузить в память. Он не обязательно совпадает с длиной каждого возвращаемого элемента, поскольку данные могут декодироваться.

chunk_size должен иметь тип int или None. Значение None работает по-разному в зависимости от значения stream. При stream=True данные считываются по мере поступления фрагментов, размер которых определяется полученными данными. При stream=False данные возвращаются одним фрагментом.

Если decode_unicode имеет значение True, содержимое декодируется с использованием сведений о кодировке из ответа. Если сведения о кодировке отсутствуют, возвращаются байты. Это поведение можно изменить, вручную задав encoding в ответе.

iter_lines(chunk_size:int=ITER_CHUNK_SIZE, decode_unicode:Literal[False]=False, delimiter:bytes|None=None) → Iterator[bytes][исходный код]
iter_lines(chunk_size:int=ITER_CHUNK_SIZE, *, decode_unicode:Literal[True], delimiter:str|bytes|None=None) → Iterator[str|bytes]

Перебирает данные ответа построчно. Если для запроса задано stream=True, этот метод позволяет не загружать все содержимое больших ответов в память сразу.

Параметр decode_unicode работает так же, как в iter_content, с теми же ограничениями.

Примечание

Этот метод не является реентерабельным.

json(**kwargs:Any) → Any[исходный код]

Декодирует тело ответа JSON (если оно есть) в объект Python.

В зависимости от содержимого ответа метод может вернуть словарь, список и т. д.

Параметры:

**kwargs – Необязательные аргументы, принимаемые json.loads.

Вызывает исключение:

requests.exceptions.JSONDecodeError – Если тело ответа не содержит допустимый JSON.

propertylinks:dict[str,dict[str,str]]

Возвращает разобранные ссылки из заголовков ответа, если они есть.

propertynext:PreparedRequest|None

Возвращает PreparedRequest для следующего запроса в цепочке перенаправлений, если он есть.

propertyok:bool

Возвращает True, если status_code меньше 400, и False в противном случае.

Этот атрибут проверяет, находится ли код состояния ответа в диапазоне от 400 до 600, чтобы определить, произошла ли ошибка клиента или сервера. Если код состояния находится в диапазоне от 200 до 400, будет возвращено True. Это не проверка того, что код ответа равен 200 OK.

raise_for_status() → None[исходный код]

Вызывает исключение HTTPError, если оно возникло.

raw:Any

Представление ответа в виде файлового объекта (для расширенного использования). Использование raw требует, чтобы для запроса было задано stream=True. Это требование не распространяется на внутреннее использование в Requests.

reason:str

Текстовое описание статуса HTTP-ответа, например «Not Found» или «OK».

request:PreparedRequest

Объект PreparedRequest, которому соответствует этот ответ.

status_code:int

Целочисленный код статуса HTTP-ответа, например 404 или 200.

propertytext:str

Содержимое ответа в виде строки Unicode.

Если Response.encoding равен None, кодировка будет определена с помощью charset_normalizer или chardet.

Кодировка содержимого ответа определяется исключительно на основе заголовков HTTP в строгом соответствии с RFC 2616. Если у вас есть не связанные с HTTP сведения, которые позволяют точнее определить кодировку, перед обращением к этому свойству следует задать r.encoding соответствующим образом.

url:str

Итоговый URL-адрес ответа.

Классы более низкого уровня

classrequests.PreparedRequest[исходный код]

Полностью изменяемый объект 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:_t.BodyType

тело запроса для отправки на сервер.

deregister_hook(event:str, hook:Callable[[Response],Any]) → bool

Отменяет регистрацию ранее зарегистрированного обработчика. Возвращает True, если обработчик существовал, и False в противном случае.

headers:CaseInsensitiveDict[str|bytes]

словарь HTTP-заголовков.

hooks:dict[str,list[_t.HookType]]

словарь функций обратного вызова для внутреннего использования.

method:str|None

HTTP-метод для отправки на сервер.

propertypath_url:str

Формирует URL пути для использования.

prepare(method:str|None=None, url:_t.UriType|None=None, headers:Mapping[str,str|bytes]|None=None, files:_t.FilesType=None, data:_t.DataType=None, params:_t.ParamsType=None, auth:_t.AuthType=None, cookies:RequestsCookieJar|CookieJar|dict[str,str]|None=None, hooks:_t.HooksInputType|None=None, json:_t.JsonType=None) → None[исходный код]

Подготавливает запрос целиком с указанными параметрами.

prepare_auth(auth:_t.AuthType, url:_t.UriType='') → None[исходный код]

Подготавливает указанные данные HTTP-аутентификации.

prepare_body(data:_t.DataType, files:_t.FilesType, json:_t.JsonType=None) → None[исходный код]

Подготавливает указанные данные тела HTTP-запроса.

prepare_content_length(body:_t.BodyType) → None[исходный код]

Подготавливает заголовок Content-Length на основе метода запроса и тела

prepare_cookies(cookies:RequestsCookieJar|CookieJar|dict[str,str]|None) → None[исходный код]

Подготавливает указанные данные HTTP-cookie.

Эта функция в итоге формирует заголовок Cookie из указанных файлов cookie с помощью cookielib. Из-за особенностей реализации cookielib заголовок не будет сформирован заново, если он уже существует; это означает, что функцию можно вызвать только один раз за время существования объекта PreparedRequest. Любые последующие вызовы prepare_cookies не окажут фактического эффекта, если предварительно не удалить заголовок «Cookie».

prepare_headers(headers:Mapping[str,str|bytes]|None) → None[исходный код]

Подготавливает указанные HTTP-заголовки.

prepare_hooks(hooks:Mapping[str,Iterable[Callable[[Response],Any]]|Callable[[Response],Any]]|None) → None[исходный код]

Подготавливает указанные обработчики.

prepare_method(method:str|None) → None[исходный код]

Подготавливает указанный HTTP-метод.

prepare_url(url:_t.UriType, params:_t.ParamsType) → None[исходный код]

Подготавливает указанный HTTP URL.

register_hook(event:str, hook:Iterable[Callable[[Response],Any]]|Callable[[Response],Any]) → None

Корректно регистрирует обработчик.

url:str|None

HTTP URL, на который отправляется запрос.

classrequests.adapters.BaseAdapter[исходный код]

Базовый транспортный адаптер

close() → None[исходный код]

Очищает специфичные для адаптера элементы.

send(request:PreparedRequest, stream:bool=False, timeout:_t.TimeoutType=None, verify:_t.VerifyType=True, cert:_t.CertType=None, proxies:dict[str,str]|None=None) → Response[исходный код]

Отправляет объект PreparedRequest. Возвращает объект Response.

Параметры:
  • request – Отправляемый объект PreparedRequest.
  • stream – (необязательно) Определяет, нужно ли передавать содержимое запроса потоком.
  • timeout (float or tuple) – (необязательно) Время ожидания данных от сервера до прекращения ожидания: число с плавающей точкой или кортеж (тайм-аут подключения, тайм-аут чтения).
  • verify – (необязательно) Логическое значение, определяющее, следует ли проверять TLS-сертификат сервера, либо строка, которая должна содержать путь к используемому пакету сертификатов ЦС.
  • cert – (необязательно) Предоставленный пользователем SSL-сертификат, которому следует доверять.
  • proxies – (необязательно) Словарь прокси-серверов, применяемый к запросу.
classrequests.adapters.HTTPAdapter(pool_connections:int=10, pool_maxsize:int=10, max_retries:int|Retry=0, pool_block:bool=False)[исходный код]

Встроенный HTTP-адаптер для urllib3.

Предоставляет универсальный интерфейс для сеансов Requests, позволяющий обращаться к URL-адресам 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:PreparedRequest, **kwargs:Any) → None[исходный код]

Добавляет все заголовки, необходимые для соединения. Начиная с версии 2.0 по умолчанию метод ничего не делает, но оставлен для переопределения пользователями, создающими подклассы HTTPAdapter.

Этот метод не следует вызывать из пользовательского кода; он доступен только для использования при создании подклассов HTTPAdapter.

Параметры:
  • request – Объект PreparedRequest, в который нужно добавить заголовки.
  • kwargs – Именованные аргументы, переданные при вызове send().
build_connection_pool_key_attributes(request:PreparedRequest, verify:_t.VerifyType, cert:_t.CertType=None) → tuple[dict[str,Any],dict[str,Any]][исходный код]

Создаёт атрибуты PoolKey, используемые urllib3 для получения соединения.

Метод использует PreparedRequest, указанное пользователем значение verify и значение параметра cert, чтобы определить значения PoolKey для выбора соединения из заданного пула соединений urllib3.

Аргументы ключа пула, связанные с SSL, задаются непоследовательно. На момент написания документации, чтобы определить, какие ключи могут присутствовать в этом словаре, используйте следующие правила:

  • Если verify равен True, будет задан "ssl_context", содержащий контекст SSL Requests по умолчанию
  • Если verify равен False, "ssl_context" задан не будет, но будет задан "cert_reqs"
  • Если verify является строкой (то есть указанным пользователем набором доверенных сертификатов), будет задан "ca_certs", если строка не является каталогом, распознанным функцией os.path.isdir; в противном случае будет задан "ca_cert_dir".
  • Если задан "cert", "cert_file" будет задан всегда. Если "cert" — кортеж со вторым элементом, также будет присутствовать "key_file"

Чтобы переопределить эти настройки, можно создать подкласс этого класса, вызвать этот метод и изменить параметры по приведённым выше правилам. Например, чтобы использовать пользовательский ssl.SSLContext, необходимо задать "ssl_context", а также изменить другие ключи в соответствии с требованиями, чтобы обеспечить желаемое поведение.

Параметры:
  • request (PreparedRequest) – Объект PreparedRequest, отправляемый через соединение.
  • verify – Логическое значение, определяющее, проверять ли сертификат TLS сервера, либо строка, указывающая путь к используемому набору сертификатов центра сертификации (CA).
  • cert – (необязательно) Предоставленный пользователем сертификат SSL для аутентификации клиента (то есть mTLS). Это может быть строка (то есть путь к файлу, содержащему сертификат и ключ) или кортеж длины 2 с путями к файлам сертификата и ключа.
Возвращает:

Кортеж из двух словарей. Первый содержит часть Pool Key с параметрами узла, включая схему, имя хоста и порт. Второй — словарь параметров, связанных с SSLContext.

build_response(req:PreparedRequest, resp:Any) → Response[исходный код]

Создаёт объект Response из ответа urllib3. Этот метод не следует вызывать из пользовательского кода; он доступен только для использования при создании подклассов HTTPAdapter

Параметры:
  • req – Объект PreparedRequest, использованный для формирования ответа.
  • resp – Объект ответа urllib3.
Тип возвращаемого значения:

requests.Response

cert_verify(conn:Any, url:str, verify:_t.VerifyType, cert:_t.CertType) → None[исходный код]

Проверяет сертификат SSL. Этот метод не следует вызывать из пользовательского кода; он доступен только для использования при создании подклассов HTTPAdapter.

Параметры:
  • conn – Объект соединения urllib3, связанный с сертификатом.
  • url – Запрошенный URL.
  • verify – Логическое значение, определяющее, проверять ли сертификат TLS сервера, либо строка, указывающая путь к используемому набору сертификатов центра сертификации (CA).
  • cert – Сертификат SSL для проверки.
close() → None[исходный код]

Освобождает все внутренние ресурсы.

В настоящее время закрывает PoolManager и все активные ProxyManager, что приводит к закрытию всех соединений в пулах.

get_connection(url:str, proxies:dict[str,str]|None=None) → HTTPConnectionPool[исходный код]

УСТАРЕЛО: Пользователям следует перейти на get_connection_with_tls_context во всех подклассах HTTPAdapter, использующих Requests версии 2.32.2 и выше.

Возвращает соединение urllib3 для указанного URL. Этот метод не следует вызывать из пользовательского кода; он доступен только для использования при создании подклассов HTTPAdapter.

Параметры:
  • url – URL для подключения.
  • proxies – (необязательно) Словарь прокси в формате Requests, используемых для этого запроса.
Тип возвращаемого значения:

urllib3.HTTPConnectionPool

get_connection_with_tls_context(request:PreparedRequest, verify:_t.VerifyType, proxies:dict[str,str]|None=None, cert:_t.CertType=None) → HTTPConnectionPool[исходный код]

Возвращает соединение urllib3 для указанного запроса и настроек TLS. Этот метод не следует вызывать из пользовательского кода; он доступен только для использования при создании подклассов HTTPAdapter.

Параметры:
  • request – Объект PreparedRequest, отправляемый через соединение.
  • verify – Логическое значение, определяющее, проверять ли сертификат TLS сервера, либо строка, указывающая путь к используемому набору сертификатов центра сертификации (CA).
  • proxies – (необязательно) Словарь прокси, применяемый к запросу.
  • cert – (необязательно) Предоставленный пользователем сертификат SSL для аутентификации клиента (то есть mTLS).
Тип возвращаемого значения:

urllib3.HTTPConnectionPool

init_poolmanager(connections:int, maxsize:int, block:bool=False, **pool_kwargs:Any) → None[исходный код]

Инициализирует PoolManager urllib3.

Этот метод не следует вызывать из пользовательского кода; он доступен только для использования при создании подклассов HTTPAdapter.

Параметры:
  • connections – Количество пулов соединений urllib3 для кэширования.
  • maxsize – Максимальное количество соединений, сохраняемых в пуле.
  • block – Ожидать освобождения соединения, если свободных соединений нет.
  • pool_kwargs – Дополнительные именованные аргументы для инициализации Pool Manager.
proxy_headers(proxy:str) → dict[str,str][исходный код]

Возвращает словарь заголовков, добавляемых к любому запросу, отправляемому через прокси. Метод использует особенности urllib3, чтобы заголовки передавались именно прокси, а не в туннелируемом запросе, если используется CONNECT.

Этот метод не следует вызывать из пользовательского кода; он доступен только для использования при создании подклассов HTTPAdapter.

Параметры:

proxy – URL прокси, используемого для этого запроса.

Тип возвращаемого значения:

dict

proxy_manager_for(proxy:str, **proxy_kwargs:Any) → Any[исходный код]

Возвращает ProxyManager urllib3 для указанного прокси.

Этот метод не следует вызывать из пользовательского кода; он доступен только для использования при создании подклассов HTTPAdapter.

Параметры:
  • proxy – Прокси, для которого нужно вернуть ProxyManager urllib3.
  • proxy_kwargs – Дополнительные именованные аргументы для настройки Proxy Manager.
Возвращает:

ProxyManager

Тип возвращаемого значения:

urllib3.ProxyManager

request_url(request:PreparedRequest, proxies:dict[str,str]|None) → str[исходный код]

Получает URL, который будет использоваться при отправке итогового запроса.

Если сообщение отправляется через HTTP-прокси, необходимо использовать полный URL. В противном случае следует использовать только часть URL с путём.

Этот метод не следует вызывать из пользовательского кода; он доступен только для использования при создании подклассов HTTPAdapter.

Параметры:
  • request – Отправляемый объект PreparedRequest.
  • proxies – Словарь схем или схем и узлов, сопоставленных с URL прокси.
Тип возвращаемого значения:

str

send(request:PreparedRequest, stream:bool=False, timeout:_t.TimeoutType=None, verify:_t.VerifyType=True, cert:_t.CertType=None, proxies:dict[str,str]|None=None) → Response[исходный код]

Отправляет объект PreparedRequest. Возвращает объект Response.

Параметры:
  • request – Отправляемый PreparedRequest.
  • stream – (необязательно) Следует ли передавать содержимое запроса потоком.
  • timeout (float или tuple или объект Timeout из urllib3) – (необязательно) Время ожидания данных от сервера до прекращения ожидания: число с плавающей точкой или кортеж (тайм-аут подключения, тайм-аут чтения).
  • verify – (необязательно) Логическое значение, определяющее, проверять ли сертификат TLS сервера, либо строка, указывающая путь к используемому пакету сертификатов центра сертификации.
  • cert – (необязательно) Сертификат SSL, предоставленный пользователем и которому следует доверять.
  • proxies – (необязательно) Словарь прокси-серверов, применяемых к запросу.
Тип возвращаемого значения:

requests.Response

Аутентификация

classrequests.auth.AuthBase[исходный код]

Базовый класс, от которого наследуются все реализации аутентификации.

classrequests.auth.HTTPBasicAuth(username:str, password:str)[исходный код]
classrequests.auth.HTTPBasicAuth(username:bytes, password:bytes)

Добавляет базовую HTTP-аутентификацию к указанному объекту Request.

classrequests.auth.HTTPProxyAuth(username:str, password:str)[исходный код]
classrequests.auth.HTTPProxyAuth(username:bytes, password:bytes)

Добавляет HTTP-аутентификацию прокси-сервера к указанному объекту Request.

classrequests.auth.HTTPDigestAuth(username:str, password:str)[исходный код]
classrequests.auth.HTTPDigestAuth(username:bytes, password:bytes)

Добавляет дайджест-аутентификацию HTTP к указанному объекту Request.

Кодировки

requests.utils.get_encodings_from_content(content:str) → list[str][исходный код]

Возвращает кодировки из указанной строки содержимого.

Параметры:

content – байтовая строка, из которой извлекаются кодировки.

requests.utils.get_encoding_from_headers(headers:CaseInsensitiveDict[str]) → str|None[исходный код]

Возвращает кодировку из указанного словаря HTTP-заголовков.

Параметры:

headers – словарь, из которого извлекается кодировка.

Тип возвращаемого значения:

str

requests.utils.get_unicode_from_response(r:Response) → str|bytes|None[исходный код]

Возвращает запрошенное содержимое в формате Unicode.

Параметры:

r – объект Response, из которого извлекается содержимое в формате Unicode.

Используются следующие варианты:

  1. кодировка charset из content-type
  2. в противном случае все символы Unicode заменяются
Тип возвращаемого значения:

str

Файлы cookie

requests.utils.dict_from_cookiejar(cj:CookieJar) → dict[str,str|None][исходный код]

Возвращает словарь пар «ключ/значение» из CookieJar.

Параметры:

cj – объект CookieJar, из которого извлекаются файлы cookie.

Тип возвращаемого значения:

dict

requests.utils.add_dict_to_cookiejar(cj:CookieJar, cookie_dict:dict[str,str]) → CookieJar[исходный код]

Возвращает CookieJar из словаря пар «ключ/значение».

Параметры:
  • cj – CookieJar, в который добавляются файлы cookie.
  • cookie_dict – словарь пар «ключ/значение» для добавления в CookieJar.
Тип возвращаемого значения:

CookieJar

requests.cookies.cookiejar_from_dict(cookie_dict:dict[str,str]|None, cookiejar:None=None, overwrite:bool=True) → RequestsCookieJar[исходный код]
requests.cookies.cookiejar_from_dict(cookie_dict:dict[str,str]|None, cookiejar:_CookieJarT, overwrite:bool=True) → _CookieJarT

Возвращает CookieJar из словаря пар «ключ/значение».

Параметры:
  • cookie_dict – словарь пар «ключ/значение» для добавления в CookieJar.
  • cookiejar – (необязательно) CookieJar, в который добавляются файлы cookie.
  • overwrite – (необязательно) Если имеет значение False, уже имеющиеся в хранилище файлы cookie не будут заменены новыми.
Тип возвращаемого значения:

CookieJar

классrequests.cookies.RequestsCookieJar(policy=None)[исходный код]

Класс для обеспечения совместимости: является http.cookiejar.CookieJar, но предоставляет интерфейс словаря.

Это CookieJar, который мы создаём по умолчанию для запросов и сеансов, если они не задают собственный, поскольку некоторые клиенты могут рассчитывать на поддержку операций со словарями для response.cookies и session.cookies.

Requests не использует интерфейс словаря внутри библиотеки; он нужен только для совместимости с кодом внешних клиентов. Весь код Requests должен работать «из коробки» с предоставленными извне экземплярами CookieJar, например LWPCookieJar и FileCookieJar.

В отличие от обычного CookieJar, этот класс можно сериализовать с помощью pickle.

Предупреждение

Операции со словарём, которые обычно выполняются за O(1), могут выполняться за O(n).

add_cookie_header(request)

Добавить к запросу корректный заголовок Cookie: (объект urllib.request.Request).

Заголовок Cookie2 также добавляется, если значение policy.hide_cookie2 не равно true.

clear(domain=None, path=None, name=None)

Удалить некоторые файлы cookie.

Вызов этого метода без аргументов удалит все файлы cookie. Если передан один аргумент, будут удалены только файлы cookie, относящиеся к указанному домену. Если переданы два аргумента, будут удалены файлы cookie, относящиеся к указанному пути в этом домене. Если переданы три аргумента, будет удалён файл cookie с указанными именем, путём и доменом.

Вызывает KeyError, если подходящий файл cookie не найден.

clear_expired_cookies()

Удалить все файлы cookie с истёкшим сроком действия.

Вероятно, вызывать этот метод не нужно: файлы cookie с истёкшим сроком действия никогда не отправляются обратно на сервер (если используется DefaultCookiePolicy); сам CookieJar периодически вызывает этот метод, а метод .save() в любом случае не сохраняет такие файлы cookie (если только вы не передадите аргумент ignore_expires со значением true, чтобы изменить это поведение).

clear_session_cookies()

Удалить все сеансовые файлы cookie.

Обратите внимание: метод .save() в любом случае не сохраняет сеансовые файлы cookie, если только вы не передадите аргумент ignore_discard со значением true, чтобы изменить это поведение.

copy() → RequestsCookieJar[исходный код]

Вернуть копию этого RequestsCookieJar.

extract_cookies(response, request)

Извлечь файлы cookie из ответа, если это допустимо с учётом запроса.

get(name:str, default:str|None=None, domain:str|None=None, path:str|None=None) → str|None[исходный код]

Метод get(), подобный методу словаря, который также поддерживает необязательные аргументы domain и path, чтобы разрешать конфликты имён при использовании одного хранилища файлов cookie для нескольких доменов.

Предупреждение

Операция выполняется за O(n), а не за O(1).

get_dict(domain:str|None=None, path:str|None=None) → dict[str,str|None][исходный код]

Принимает необязательные аргументы domain и path и возвращает обычный словарь Python с парами «имя — значение» для файлов cookie, соответствующих заданным условиям.

Тип возвращаемого значения:

dict

get_policy() → CookiePolicy[исходный код]

Вернуть используемый экземпляр CookiePolicy.

items() → list[tuple[str,str|None]][исходный код]

Метод items(), подобный методу словаря, который возвращает список пар «имя — значение» из хранилища. Позволяет клиентскому коду вызвать dict(RequestsCookieJar) и получить обычный словарь Python с парами «ключ — значение».

См. также

keys() и values().

iteritems() → Iterator[tuple[str,str|None]][исходный код]

Метод iteritems(), подобный методу словаря, который возвращает итератор пар «имя — значение» из хранилища.

См. также

iterkeys() и itervalues().

iterkeys() → Iterator[str][исходный код]

Метод iterkeys(), подобный методу словаря, который возвращает итератор имён файлов cookie из хранилища.

См. также

itervalues() и iteritems().

itervalues() → Iterator[str|None][исходный код]

Метод itervalues(), подобный методу словаря, который возвращает итератор значений файлов cookie из хранилища.

См. также

iterkeys() и iteritems().

keys() → list[str][исходный код]

Метод keys(), подобный методу словаря, который возвращает список имён файлов cookie из хранилища.

См. также

values() и items().

list_domains() → list[str][исходный код]

Вспомогательный метод для вывода списка всех доменов в хранилище.

list_paths() → list[str][исходный код]

Вспомогательный метод для вывода списка всех путей в хранилище.

make_cookies(response, request)

Вернуть последовательность объектов Cookie, извлечённых из объекта ответа.

multiple_domains() → bool[исходный код]

Возвращает True, если в хранилище есть несколько доменов. В противном случае возвращает False.

Тип возвращаемого значения:

bool

pop(k[, d]) → v, удалить указанный ключ и вернуть соответствующее значение.

Если ключ не найден, возвращается d, если он задан; в противном случае возникает KeyError.

popitem() → (k, v), удалить и вернуть произвольную пару (ключ, значение)

в виде кортежа из двух элементов; если D пуст, возникает KeyError.

set(name:str, value:str|Morsel[dict[str,str]]|None, **kwargs:Any) → Cookie|None[исходный код]

Метод set(), подобный методу словаря, который также поддерживает необязательные аргументы domain и path, чтобы разрешать конфликты имён при использовании одного хранилища файлов cookie для нескольких доменов.

set_cookie(cookie:Cookie, *args:Any, **kwargs:Any) → None[исходный код]

Установить файл cookie без проверки того, следует ли его устанавливать.

set_cookie_if_ok(cookie, request)

Установить файл cookie, если согласно политике это допустимо.

setdefault(k[, d]) → D.get(k,d); также установить D[k]=d, если k отсутствует в D
update(other:CookieJar|SupportsKeysAndGetItem[str,str]) → None[исходный код]

Обновить это хранилище файлами cookie из другого CookieJar или объекта с интерфейсом словаря.

values() → list[str|None][исходный код]

Метод values(), подобный методу словаря, который возвращает список значений файлов cookie из хранилища.

См. также

keys() и items().

классrequests.cookies.CookieConflictError[исходный код]

В хранилище файлов cookie есть два файла cookie, соответствующих заданным критериям. Используйте .get и .set, указав аргументы domain и path, чтобы точнее определить нужный файл cookie.

add_note()

Exception.add_note(note) — добавить примечание к исключению

with_traceback()

Exception.with_traceback(tb) — установить self.__traceback__ в значение tb и вернуть self.

Поиск по кодам состояния

requests.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, early-hints
  • 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, content_too_large
  • 414: request_uri_too_large, uri_too_long
  • 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, unprocessable_content
  • 423: locked
  • 424: failed_dependency, dependency
  • 425: unordered_collection, unordered, too_early
  • 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 метода requests удалён. Некоторые из этих настроек теперь задаются для Session, например, поддержание постоянного соединения и максимальное количество перенаправлений. Параметр подробного вывода следует настраивать с помощью ведения журнала.

    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, поскольку это точнее описывает тип ошибки. Кроме того, неверная escape-последовательность в URL теперь вызывает подкласс RequestException, а не ValueError.

    requests.get('http://%zz/')   # raises requests.exceptions.InvalidURL
    

    Наконец, исключения httplib.IncompleteRead, вызванные некорректным кодированием chunked, теперь будут приводить к исключению Requests ChunkedEncodingError.

  • 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-2026 Kenneth Reitz and other contributors
Licensed under the Apache license.
https://requests.readthedocs.io/en/latest/api/index.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API