21.11. http — modules HTTP

Code source : Lib/http/__init__.py


http est un paquet qui rassemble plusieurs modules servant à travailler avec le protocole HTTP (HyperText Transfer Procotol) :

  • Le module http.client est un client HTTP bas niveau. Pour accéder à des ressources web, utiliser le module haut niveau urllib.request

  • Le module http.server contient des classes serveur HTTP basiques basées sur socketserver

  • Le module http.cookies contient des utilitaires liés à la gestion d’état HTTP via les cookies

  • Le module http.cookiejar fournit un mécanisme de persistance des cookies

http est aussi un module qui définit une liste de codes d’état HTTP et les messages associés par le biais de l’énumération http.HTTPStatus :

class http.HTTPStatus

Nouveau dans la version 3.5.

Sous-classe de enum.IntEnum qui définit un ensemble de codes d’état HTTP, messages explicatifs et descriptions complètes écrites en anglais.

Utilisation :

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

21.11.1. Codes d’état HTTP

Les codes d’état disponibles (enregistrés auprès de l’IANA) dans http.HTTPStatus sont :

Code

Message

Détails

100

CONTINUE

HTTP/1.1 RFC 7231, Section 6.2.1

101

SWITCHING_PROTOCOLS

HTTP/1.1 RFC 7231, Section 6.2.2

102

PROCESSING

WebDAV RFC 2518, Section 10.1

200

OK

HTTP/1.1 RFC 7231, Section 6.3.1

201

CREATED

HTTP/1.1 RFC 7231, Section 6.3.2

202

ACCEPTED

HTTP/1.1 RFC 7231, Section 6.3.3

203

NON_AUTHORITATIVE_INFORMATION

HTTP/1.1 RFC 7231, Section 6.3.4

204

NO_CONTENT

HTTP/1.1 RFC 7231, Section 6.3.5

205

RESET_CONTENT

HTTP/1.1 RFC 7231, Section 6.3.6

206

PARTIAL_CONTENT

HTTP/1.1 RFC 7233, Section 4.1

207

MULTI_STATUS

WebDAV RFC 4918, Section 11.1

208

ALREADY_REPORTED

WebDAV Binding Extensions RFC 5842, Section 7.1 (Expérimental)

226

IM_USED

Delta Encoding in HTTP RFC 3229, Section 10.4.1

300

MULTIPLE_CHOICES

HTTP/1.1 RFC 7231, Section 6.4.1

301

MOVED_PERMANENTLY

HTTP/1.1 RFC 7231, Section 6.4.2

302

FOUND

HTTP/1.1 RFC 7231, Section 6.4.3

303

SEE_OTHER

HTTP/1.1 RFC 7231, Section 6.4.4

304

NOT_MODIFIED

HTTP/1.1 RFC 7232, Section 4.1

305

USE_PROXY

HTTP/1.1 RFC 7231, Section 6.4.5

307

TEMPORARY_REDIRECT

HTTP/1.1 RFC 7231, Section 6.4.7

308

PERMANENT_REDIRECT

Permanent Redirect RFC 7238, Section 3 (Expérimental)

400

BAD_REQUEST

HTTP/1.1 RFC 7231, Section 6.5.1

401

UNAUTHORIZED

HTTP/1.1 Authentication RFC 7235, Section 3.1

402

PAYMENT_REQUIRED

HTTP/1.1 RFC 7231, Section 6.5.2

403

FORBIDDEN

HTTP/1.1 RFC 7231, Section 6.5.3

404

NOT_FOUND

HTTP/1.1 RFC 7231, Section 6.5.4

405

METHOD_NOT_ALLOWED

HTTP/1.1 RFC 7231, Section 6.5.5

406

NOT_ACCEPTABLE

HTTP/1.1 RFC 7231, Section 6.5.6

407

PROXY_AUTHENTICATION_REQUIRED

HTTP/1.1 Authentication RFC 7235, Section 3.2

408

REQUEST_TIMEOUT

HTTP/1.1 RFC 7231, Section 6.5.7

409

CONFLICT

HTTP/1.1 RFC 7231, Section 6.5.8

410

GONE

HTTP/1.1 RFC 7231, Section 6.5.9

411

LENGTH_REQUIRED

HTTP/1.1 RFC 7231, Section 6.5.10

412

PRECONDITION_FAILED

HTTP/1.1 RFC 7232, Section 4.2

413

REQUEST_ENTITY_TOO_LARGE

HTTP/1.1 RFC 7231, Section 6.5.11

414

REQUEST_URI_TOO_LONG

HTTP/1.1 RFC 7231, Section 6.5.12

415

UNSUPPORTED_MEDIA_TYPE

HTTP/1.1 RFC 7231, Section 6.5.13

416

REQUEST_RANGE_NOT_SATISFIABLE

HTTP/1.1 Range Requests RFC 7233, Section 4.4

417

EXPECTATION_FAILED

HTTP/1.1 RFC 7231, Section 6.5.14

422

UNPROCESSABLE_ENTITY

WebDAV RFC 4918, Section 11.2

423

LOCKED

WebDAV RFC 4918, Section 11.3

424

FAILED_DEPENDENCY

WebDAV RFC 4918, Section 11.4

426

UPGRADE_REQUIRED

HTTP/1.1 RFC 7231, Section 6.5.15

428

PRECONDITION_REQUIRED

Additional HTTP Status Codes RFC 6585

429

TOO_MANY_REQUESTS

Additional HTTP Status Codes RFC 6585

431

REQUEST_HEADER_FIELDS_TOO_LARGE

Additional HTTP Status Codes RFC 6585

500

INTERNAL_SERVER_ERROR

HTTP/1.1 RFC 7231, Section 6.6.1

501

NOT_IMPLEMENTED

HTTP/1.1 RFC 7231, Section 6.6.2

502

BAD_GATEWAY

HTTP/1.1 RFC 7231, Section 6.6.3

503

SERVICE_UNAVAILABLE

HTTP/1.1 RFC 7231, Section 6.6.4

504

GATEWAY_TIMEOUT

HTTP/1.1 RFC 7231, Section 6.6.5

505

HTTP_VERSION_NOT_SUPPORTED

HTTP/1.1 RFC 7231, Section 6.6.6

506

VARIANT_ALSO_NEGOTIATES

Transparent Content Negotiation in HTTP RFC 2295, Section 8.1 (Expérimental)

507

INSUFFICIENT_STORAGE

WebDAV RFC 4918, Section 11.5

508

LOOP_DETECTED

WebDAV Binding Extensions RFC 5842, Section 7.2 (Expérimental)

510

NOT_EXTENDED

An HTTP Extension Framework RFC 2774, Section 7 (Expérimental)

511

NETWORK_AUTHENTICATION_REQUIRED

Codes d’état HTTP supplémentaires RFC 6585, Section 6

Dans le but de préserver la compatibilité descendante, les valeurs d’énumération sont aussi présentes dans le module http.client sous forme de constantes. Les noms de valeurs de l’énumération sont accessibles de deux manières : par exemple, le code HTTP 200 est accessible sous les noms http.HTTPStatus.OK et http.client.OK.