Документация Python неофициальный перевод
Содержание страницы

http – модули HTTPhttp – HTTP modules

Исходный код: Lib/http/__init__.py


http – пакет, объединяющий несколько модулей для работы с протоколом передачи гипертекста (HTTP):

  • http.client – низкоуровневый клиент протокола HTTP; для открытия URL на высоком уровне используйте urllib.request

  • http.server содержит базовые классы HTTP-сервера на основе socketserver

  • http.cookies содержит утилиты для реализации управления состоянием с помощью куки

  • http.cookiejar обеспечивает сохранение куки

Модуль http также определяет следующие перечисления, которые помогают работать с кодом, связанным с HTTP:

class http.HTTPStatus

Добавлено в версии 3.5.

Подкласс enum.IntEnum, определяющий набор HTTP-статусов, поясняющих фраз и подробных описаний на английском языке.

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

>>> from http import HTTPStatus
>>> HTTPStatus.OK
HTTPStatus.OK
>>> HTTPStatus.OK == 200
True
>>> HTTPStatus.OK.value
200
>>> HTTPStatus.OK.phrase
'OK'
>>> HTTPStatus.OK.description
'Request fulfilled, document follows'
>>> list(HTTPStatus)
[HTTPStatus.CONTINUE, HTTPStatus.SWITCHING_PROTOCOLS, ...]

Коды состояния HTTPHTTP status codes

Поддерживаемые зарегистрированные IANA коды состояния, доступные в http.HTTPStatus:

Код

Имя перечисления

Подробности

100

CONTINUE

Семантика HTTP RFC 9110, раздел 15.2.1

101

SWITCHING_PROTOCOLS

Семантика HTTP RFC 9110, раздел 15.2.2

102

PROCESSING

WebDAV RFC 2518, раздел 10.1

103

EARLY_HINTS

Код состояния HTTP для указания подсказок RFC 8297

200

OK

Семантика HTTP RFC 9110, раздел 15.3.1

201

CREATED

Семантика HTTP RFC 9110, раздел 15.3.2

202

ACCEPTED

Семантика HTTP RFC 9110, раздел 15.3.3

203

NON_AUTHORITATIVE_INFORMATION

Семантика HTTP RFC 9110, раздел 15.3.4

204

NO_CONTENT

Семантика HTTP RFC 9110, раздел 15.3.5

205

RESET_CONTENT

Семантика HTTP RFC 9110, раздел 15.3.6

206

PARTIAL_CONTENT

Семантика HTTP RFC 9110, раздел 15.3.7

207

MULTI_STATUS

WebDAV RFC 4918, раздел 11.1

208

ALREADY_REPORTED

Расширения привязки WebDAV RFC 5842, раздел 7.1 (экспериментальный)

226

IM_USED

Дельта-кодирование в HTTP RFC 3229, раздел 10.4.1

300

MULTIPLE_CHOICES

Семантика HTTP RFC 9110, раздел 15.4.1

301

MOVED_PERMANENTLY

Семантика HTTP RFC 9110, раздел 15.4.2

302

FOUND

Семантика HTTP RFC 9110, раздел 15.4.3

303

SEE_OTHER

Семантика HTTP RFC 9110, Раздел 15.4.4

304

NOT_MODIFIED

Семантика HTTP RFC 9110, Раздел 15.4.5

305

USE_PROXY

Семантика HTTP RFC 9110, Раздел 15.4.6

307

TEMPORARY_REDIRECT

Семантика HTTP RFC 9110, Раздел 15.4.8

308

PERMANENT_REDIRECT

Семантика HTTP RFC 9110, Раздел 15.4.9

400

BAD_REQUEST

Семантика HTTP RFC 9110, Раздел 15.5.1

401

UNAUTHORIZED

Семантика HTTP RFC 9110, Раздел 15.5.2

402

PAYMENT_REQUIRED

Семантика HTTP RFC 9110, Раздел 15.5.3

403

FORBIDDEN

Семантика HTTP RFC 9110, Раздел 15.5.4

404

NOT_FOUND

Семантика HTTP RFC 9110, Раздел 15.5.5

405

METHOD_NOT_ALLOWED

Семантика HTTP RFC 9110, Раздел 15.5.6

406

NOT_ACCEPTABLE

Семантика HTTP RFC 9110, Раздел 15.5.7

407

PROXY_AUTHENTICATION_REQUIRED

Семантика HTTP RFC 9110, Раздел 15.5.8

408

REQUEST_TIMEOUT

Семантика HTTP RFC 9110, Раздел 15.5.9

409

CONFLICT

Семантика HTTP RFC 9110, Раздел 15.5.10

410

GONE

Семантика HTTP RFC 9110, Раздел 15.5.11

411

LENGTH_REQUIRED

Семантика HTTP RFC 9110, Раздел 15.5.12

412

PRECONDITION_FAILED

Семантика HTTP RFC 9110, Раздел 15.5.13

413

CONTENT_TOO_LARGE

Семантика HTTP RFC 9110, Раздел 15.5.14

414

URI_TOO_LONG

Семантика HTTP RFC 9110, Раздел 15.5.15

415

UNSUPPORTED_MEDIA_TYPE

Семантика HTTP RFC 9110, Раздел 15.5.16

416

RANGE_NOT_SATISFIABLE

Семантика HTTP RFC 9110, Раздел 15.5.17

417

EXPECTATION_FAILED

Семантика HTTP RFC 9110, Раздел 15.5.18

418

IM_A_TEAPOT

HTCPCP/1.0 RFC 2324, Раздел 2.3.2

421

MISDIRECTED_REQUEST

Семантика HTTP RFC 9110, Раздел 15.5.20

422

UNPROCESSABLE_CONTENT

Семантика HTTP RFC 9110, Раздел 15.5.21

423

LOCKED

WebDAV RFC 4918, Раздел 11.3

424

FAILED_DEPENDENCY

WebDAV RFC 4918, Раздел 11.4

425

TOO_EARLY

Использование ранних данных в HTTP RFC 8470

426

UPGRADE_REQUIRED

Семантика HTTP RFC 9110, Раздел 15.5.22

428

PRECONDITION_REQUIRED

Дополнительные коды состояния HTTP RFC 6585

429

TOO_MANY_REQUESTS

Дополнительные коды состояния HTTP RFC 6585

431

REQUEST_HEADER_FIELDS_TOO_LARGE

Дополнительные коды состояния HTTP RFC 6585

451

UNAVAILABLE_FOR_LEGAL_REASONS

Код состояния HTTP для сообщения о юридических препятствиях RFC 7725

500

INTERNAL_SERVER_ERROR

Семантика HTTP RFC 9110, раздел 15.6.1

501

NOT_IMPLEMENTED

Семантика HTTP RFC 9110, раздел 15.6.2

502

BAD_GATEWAY

Семантика HTTP RFC 9110, раздел 15.6.3

503

SERVICE_UNAVAILABLE

Семантика HTTP RFC 9110, раздел 15.6.4

504

GATEWAY_TIMEOUT

Семантика HTTP RFC 9110, раздел 15.6.5

505

HTTP_VERSION_NOT_SUPPORTED

Семантика HTTP RFC 9110, раздел 15.6.6

506

VARIANT_ALSO_NEGOTIATES

Прозрачное согласование содержимого в HTTP RFC 2295, раздел 8.1 (экспериментальный)

507

INSUFFICIENT_STORAGE

WebDAV RFC 4918, раздел 11.5

508

LOOP_DETECTED

Расширения привязки WebDAV RFC 5842, раздел 7.2 (экспериментальный)

510

NOT_EXTENDED

Расширяемая структура HTTP RFC 2774, раздел 7 (экспериментальный)

511

NETWORK_AUTHENTICATION_REQUIRED

Дополнительные коды состояния HTTP RFC 6585, раздел 6

Для сохранения обратной совместимости значения перечисления также присутствуют в модуле http.client в виде констант. Имя перечисления совпадает с именем константы (т.е. http.HTTPStatus.OK также доступно как http.client.OK).

Изменено в версии 3.7: Добавлен код состояния 421 MISDIRECTED_REQUEST.

Добавлено в версии 3.8: Добавлен код состояния 451 UNAVAILABLE_FOR_LEGAL_REASONS.

Добавлено в версии 3.9: Добавлены коды состояния 103 EARLY_HINTS, 418 IM_A_TEAPOT и 425 TOO_EARLY.

Изменено в версии 3.13: Реализована номенклатура RFC9110 для констант состояния. Старые имена констант сохранены для обратной совместимости: 413 REQUEST_ENTITY_TOO_LARGE, 414 REQUEST_URI_TOO_LONG, 416 REQUESTED_RANGE_NOT_SATISFIABLE и 422 UNPROCESSABLE_ENTITY.

Категория состояния HTTPHTTP status category

Добавлено в версии 3.12.

Значения перечисления имеют несколько свойств, указывающих категорию состояния HTTP:

Свойство

Указывает, что

Подробности

is_informational

100 <= status <= 199

Семантика HTTP RFC 9110, раздел 15

is_success

200 <= status <= 299

Семантика HTTP RFC 9110, раздел 15

is_redirection

300 <= status <= 399

Семантика HTTP RFC 9110, раздел 15

is_client_error

400 <= status <= 499

Семантика HTTP RFC 9110, раздел 15

is_server_error

500 <= status <= 599

Семантика HTTP RFC 9110, раздел 15

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

>>> from http import HTTPStatus
>>> HTTPStatus.OK.is_success
True
>>> HTTPStatus.OK.is_client_error
False
class http.HTTPMethod

Добавлено в версии 3.12.

Подкласс enum.StrEnum, определяющий набор HTTP-методов и описаний на английском языке.

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

>>> from http import HTTPMethod
>>>
>>> HTTPMethod.GET
<HTTPMethod.GET>
>>> HTTPMethod.GET == 'GET'
True
>>> HTTPMethod.GET.value
'GET'
>>> HTTPMethod.GET.description
'Retrieve the target.'
>>> list(HTTPMethod)
[<HTTPMethod.CONNECT>,
 <HTTPMethod.DELETE>,
 <HTTPMethod.GET>,
 <HTTPMethod.HEAD>,
 <HTTPMethod.OPTIONS>,
 <HTTPMethod.PATCH>,
 <HTTPMethod.POST>,
 <HTTPMethod.PUT>,
 <HTTPMethod.TRACE>]

Методы HTTPHTTP methods

Поддерживаемые, зарегистрированные в IANA методы доступные в http.HTTPMethod:

Метод

Имя перечисления

Подробности

GET

GET

Семантика HTTP RFC 9110, раздел 9.3.1

HEAD

HEAD

Семантика HTTP RFC 9110, раздел 9.3.2

POST

POST

Семантика HTTP RFC 9110, раздел 9.3.3

PUT

PUT

Семантика HTTP RFC 9110, раздел 9.3.4

DELETE

DELETE

Семантика HTTP RFC 9110, раздел 9.3.5

CONNECT

CONNECT

Семантика HTTP RFC 9110, раздел 9.3.6

OPTIONS

OPTIONS

Семантика HTTP RFC 9110, раздел 9.3.7

TRACE

TRACE

Семантика HTTP RFC 9110, раздел 9.3.8

PATCH

PATCH

HTTP/1.1 RFC 5789