http — HTTP modules

Código fuente: Lib/http/__init__.py


http es un paquete que recopila varios módulos para trabajar con el Protocolo de transferencia de hipertexto:

El módulo http también define las siguientes enumeraciones que lo ayudan a trabajar con código relacionado con http:

class http.HTTPStatus

Added in version 3.5.

Una subclase de enum.IntEnum que define un conjunto de códigos de estado HTTP, frases de motivo y descripciones largas escritas en inglés.

Uso:

>>> 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, ...]

Códigos de estado HTTP

Los códigos de estado registrados por IANA disponibles en http.HTTPStatus son:

Código

Nombre de la enumeración

Detalle

100

CONTINUE

HTTP/1.1 RFC 7231, Sección 6.2.1

101

SWITCHING_PROTOCOLS

HTTP/1.1 RFC 7231, Sección 6.2.2

102

PROCESSING

WebDAV RFC 2518, Sección 10.1

103

EARLY_HINTS

Un código de estado HTTP para indicar pistas RFC 8297

200

OK

HTTP/1.1 RFC 7231, Sección 6.3.1

201

CREATED

HTTP/1.1 RFC 7231, Sección 6.3.2

202

ACCEPTED

HTTP/1.1 RFC 7231, Sección 6.3.3

203

NON_AUTHORITATIVE_INFORMATION

HTTP/1.1 RFC 7231, Sección 6.3.4

204

NO_CONTENT

HTTP/1.1 RFC 7231, Sección 6.3.5

205

RESET_CONTENT

HTTP/1.1 RFC 7231, Sección 6.3.6

206

PARTIAL_CONTENT

HTTP/1.1 RFC 7233, Sección 4.1

207

MULTI_STATUS

WebDAV RFC 4918, Sección 11.1

208

ALREADY_REPORTED

Extensiones de enlace a WebDAV RFC 5842, Sección 7.1 (Experimental)

226

IM_USED

Codificación delta en HTTP RFC 3229, Sección 10.4.1

300

MULTIPLE_CHOICES

HTTP/1.1 RFC 7231, Sección 6.4.1

301

MOVED_PERMANENTLY

HTTP/1.1 RFC 7231, Sección 6.4.2

302

FOUND

HTTP/1.1 RFC 7231, Sección 6.4.3

303

SEE_OTHER

HTTP/1.1 RFC 7231, Sección 6.4.4

304

NOT_MODIFIED

HTTP/1.1 RFC 7232, Sección 4.1

305

USE_PROXY

HTTP/1.1 RFC 7231, Sección 6.4.5

307

TEMPORARY_REDIRECT

HTTP/1.1 RFC 7231, Sección 6.4.7

308

PERMANENT_REDIRECT

Redirección permanente RFC 7238, Sección 3 (Experimental)

400

BAD_REQUEST

HTTP/1.1 RFC 7231, Sección 6.5.1

401

UNAUTHORIZED

Autentificación HTTP/1.1 RFC 7235, Sección 3.1

402

PAYMENT_REQUIRED

HTTP/1.1 RFC 7231, Sección 6.5.2

403

FORBIDDEN

HTTP/1.1 RFC 7231, Sección 6.5.3

404

NOT_FOUND

HTTP/1.1 RFC 7231, Sección 6.5.4

405

METHOD_NOT_ALLOWED

HTTP/1.1 RFC 7231, Sección 6.5.5

406

NOT_ACCEPTABLE

HTTP/1.1 RFC 7231, Sección 6.5.6

407

PROXY_AUTHENTICATION_REQUIRED

Autenticación HTTP/1.1 RFC 7235, Sección 3.2

408

REQUEST_TIMEOUT

HTTP/1.1 RFC 7231, Sección 6.5.7

409

CONFLICT

HTTP/1.1 RFC 7231, Sección 6.5.8

410

GONE

HTTP/1.1 RFC 7231, Sección 6.5.9

411

LENGTH_REQUIRED

HTTP/1.1 RFC 7231, Sección 6.5.10

412

PRECONDITION_FAILED

HTTP/1.1 RFC 7232, Sección 4.2

413

REQUEST_ENTITY_TOO_LARGE

HTTP/1.1 RFC 7231, Sección 6.5.11

414

REQUEST_URI_TOO_LONG

HTTP/1.1 RFC 7231, Sección 6.5.12

415

UNSUPPORTED_MEDIA_TYPE

HTTP/1.1 RFC 7231, Sección 6.5.13

416

REQUESTED_RANGE_NOT_SATISFIABLE

Rango de solicitudes HTTP/1.1 RFC 7233, Sección 4.4

417

EXPECTATION_FAILED

HTTP/1.1 RFC 7231, Sección 6.5.14

418

IM_A_TEAPOT

HTCPCP/1.0 RFC 2324, Sección 2.3.2

421

MISDIRECTED_REQUEST

HTTP/2 RFC 7540, Sección 9.1.2

422

UNPROCESSABLE_ENTITY

WebDAV RFC 4918, Sección 11.2

423

LOCKED

WebDAV RFC 4918, Sección 11.3

424

FAILED_DEPENDENCY

WebDAV RFC 4918, Sección 11.4

425

TOO_EARLY

Uso de datos iniciales en HTTP RFC 8470

426

UPGRADE_REQUIRED

HTTP/1.1 RFC 7231, Sección 6.5.15

428

PRECONDITION_REQUIRED

Códigos de estados HTTP adicionales RFC 6585

429

TOO_MANY_REQUESTS

Códigos de estados HTTP adicionales RFC 6585

431

REQUEST_HEADER_FIELDS_TOO_LARGE

Códigos de estados HTTP adicionales RFC 6585

451

UNAVAILABLE_FOR_LEGAL_REASONS

Un código de estado HTTP para reportar obstáculos legales RFC 7725

500

INTERNAL_SERVER_ERROR

HTTP/1.1 RFC 7231, Sección 6.6.1

501

NOT_IMPLEMENTED

HTTP/1.1 RFC 7231, Sección 6.6.2

502

BAD_GATEWAY

HTTP/1.1 RFC 7231, Sección 6.6.3

503

SERVICE_UNAVAILABLE

HTTP/1.1 RFC 7231, Sección 6.6.4

504

GATEWAY_TIMEOUT

HTTP/1.1 RFC 7231, Sección 6.6.5

505

HTTP_VERSION_NOT_SUPPORTED

HTTP/1.1 RFC 7231, Sección 6.6.6

506

VARIANT_ALSO_NEGOTIATES

Negociación transparente de contenido en HTTP RFC 2295, Sección 8.1 (Experimental)

507

INSUFFICIENT_STORAGE

WebDAV RFC 4918, Sección 11.5

508

LOOP_DETECTED

Extensiones de unión WebDAV RFC 5842, Sección 7.2 (Experimental)

510

NOT_EXTENDED

Un framework de extensión HTTP RFC 2774, Sección 7 (Experimental)

511

NETWORK_AUTHENTICATION_REQUIRED

Códigos de estados HTTP adicionales RFC 6585, Sección 6

Con el fin de preservar la compatibilidad con versiones anteriores, los valores de la enumeración están también presentes en el módulo http.client en forma de constantes. El nombre de la enumeración es el mismo que el nombre de la constante (ej. http.HTTPStatus.OK se encuentra también disponible como http.client.OK).

Distinto en la versión 3.7: Se agregó el código de estado 421 MISDIRECTED_REQUEST.

Added in version 3.8: Se agregó el código de estado 451 UNAVAILABLE_FOR_LEGAL_REASONS.

Added in version 3.9: Agregados códigos de estado 103 EARLY_HINTS, 418 IM_A_TEAPOT y 425 TOO_EARLY.

Categoría de estado HTTP

Added in version 3.12.

Los valores enum tienen varias propiedades para indicar la categoría de estado HTTP:

Propiedad

Indica que

Detalle

is_informational

100 <= status <= 199

HTTP/1.1 RFC 7231, Sección 6

is_success

200 <= status <= 299

HTTP/1.1 RFC 7231, Sección 6

is_redirection

300 <= status <= 399

HTTP/1.1 RFC 7231, Sección 6

is_client_error

400 <= status <= 499

HTTP/1.1 RFC 7231, Sección 6

is_server_error

500 <= status <= 599

HTTP/1.1 RFC 7231, Sección 6

Uso:

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

Added in version 3.11.

Una subclase de enum.StrEnum que define un conjunto de métodos HTTP y sus descripciones escritas en inglés.

Uso:

>>> 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>]

Métodos HTTP

Los métodos registrados por IANA disponibles en http.HTTPMethod son:

Método

Nombre de la enumeración

Detalle

GET

GET

HTTP/1.1 RFC 7231, Section 4.3.1

HEAD

HEAD

HTTP/1.1 RFC 7231, Section 4.3.2

POST

POST

HTTP/1.1 RFC 7231, Section 4.3.3

PUT

PUT

HTTP/1.1 RFC 7231, Section 4.3.4

DELETE

DELETE

HTTP/1.1 RFC 7231, Section 4.3.5

CONNECT

CONNECT

HTTP/1.1 RFC 7231, Section 4.3.6

OPTIONS

OPTIONS

HTTP/1.1 RFC 7231, Section 4.3.7

TRACE

TRACE

HTTP/1.1 RFC 7231, Section 4.3.8

PATCH

PATCH

HTTP/1.1 RFC 5789