http — HTTP-модули

Источник: Lib/http/__init__.py


http - это пакет, в котором собрано несколько модулей для работы с протоколом HyperText Transfer Protocol:

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

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

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

  • http.cookiejar обеспечивает сохранение файлов cookie

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

class http.HTTPStatus

Added in version 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, ...]

Коды состояния HTTP

Поддерживаются, IANA-registered status codes доступны в 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.

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

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

Изменено в версии 3.13: Реализовано именование констант состояния по стандарту RFC9110. Старые имена констант сохраняются для обратной совместимости.

Категория состояния HTTP

Added in version 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

Added in version 3.11.

Подкласс 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>]

Методы HTTP

Поддерживаются, IANA-registered methods доступны в 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