http --- HTTP 模組

原始碼:Lib/http/__init__.py


http 是一個收集了多個用於處理超文本傳輸協定 (HyperText Transfer Protocol) 之模組 (module) 的套件:

Thehttp module also defines the following enums that help you work with http related code:

classhttp.HTTPStatus

在 3.5 版被加入.

enum.IntEnum 的子類別,它定義了一組 HTTP 狀態碼、原理短語 (reason phrase) 以及英文長描述。

用法:

>>>fromhttpimportHTTPStatus>>>HTTPStatus.OKHTTPStatus.OK>>>HTTPStatus.OK==200True>>>HTTPStatus.OK.value200>>>HTTPStatus.OK.phrase'OK'>>>HTTPStatus.OK.description'Request fulfilled, document follows'>>>list(HTTPStatus)[HTTPStatus.CONTINUE, HTTPStatus.SWITCHING_PROTOCOLS, ...]

HTTP 狀態碼

http.HTTPStatus 當中,已支援並且有於IANA 註冊的狀態碼有:

狀態碼

列舉名稱

詳情

100

CONTINUE

HTTP SemanticsRFC 9110, Section 15.2.1

101

SWITCHING_PROTOCOLS

HTTP SemanticsRFC 9110, Section 15.2.2

102

PROCESSING

WebDAVRFC 2518,10.1 節

103

EARLY_HINTS

用於指定提示 (Indicating Hints)RFC 8297 的 HTTP 狀態碼

200

OK

HTTP SemanticsRFC 9110, Section 15.3.1

201

CREATED

HTTP SemanticsRFC 9110, Section 15.3.2

202

ACCEPTED

HTTP SemanticsRFC 9110, Section 15.3.3

203

NON_AUTHORITATIVE_INFORMATION

HTTP SemanticsRFC 9110, Section 15.3.4

204

NO_CONTENT

HTTP SemanticsRFC 9110, Section 15.3.5

205

RESET_CONTENT

HTTP SemanticsRFC 9110, Section 15.3.6

206

PARTIAL_CONTENT

HTTP SemanticsRFC 9110, Section 15.3.7

207

MULTI_STATUS

WebDAVRFC 4918,11.1 節

208

ALREADY_REPORTED

WebDAV 繫結擴充 (Binding Extensions)RFC 5842,7.1 節(實驗性)

226

IM_USED

HTTP 中的差分編碼RFC 3229,10.4.1 節

300

MULTIPLE_CHOICES

HTTP SemanticsRFC 9110, Section 15.4.1

301

MOVED_PERMANENTLY

HTTP SemanticsRFC 9110, Section 15.4.2

302

FOUND

HTTP SemanticsRFC 9110, Section 15.4.3

303

SEE_OTHER

HTTP SemanticsRFC 9110, Section 15.4.4

304

NOT_MODIFIED

HTTP SemanticsRFC 9110, Section 15.4.5

305

USE_PROXY

HTTP SemanticsRFC 9110, Section 15.4.6

307

TEMPORARY_REDIRECT

HTTP SemanticsRFC 9110, Section 15.4.8

308

PERMANENT_REDIRECT

HTTP SemanticsRFC 9110, Section 15.4.9

400

BAD_REQUEST

HTTP SemanticsRFC 9110, Section 15.5.1

401

UNAUTHORIZED

HTTP SemanticsRFC 9110, Section 15.5.2

402

PAYMENT_REQUIRED

HTTP SemanticsRFC 9110, Section 15.5.3

403

FORBIDDEN

HTTP SemanticsRFC 9110, Section 15.5.4

404

NOT_FOUND

HTTP SemanticsRFC 9110, Section 15.5.5

405

METHOD_NOT_ALLOWED

HTTP SemanticsRFC 9110, Section 15.5.6

406

NOT_ACCEPTABLE

HTTP SemanticsRFC 9110, Section 15.5.7

407

PROXY_AUTHENTICATION_REQUIRED

HTTP SemanticsRFC 9110, Section 15.5.8

408

REQUEST_TIMEOUT

HTTP SemanticsRFC 9110, Section 15.5.9

409

CONFLICT

HTTP SemanticsRFC 9110, Section 15.5.10

410

GONE

HTTP SemanticsRFC 9110, Section 15.5.11

411

LENGTH_REQUIRED

HTTP SemanticsRFC 9110, Section 15.5.12

412

PRECONDITION_FAILED

HTTP SemanticsRFC 9110, Section 15.5.13

413

CONTENT_TOO_LARGE

HTTP SemanticsRFC 9110, Section 15.5.14

414

URI_TOO_LONG

HTTP SemanticsRFC 9110, Section 15.5.15

415

UNSUPPORTED_MEDIA_TYPE

HTTP SemanticsRFC 9110, Section 15.5.16

416

RANGE_NOT_SATISFIABLE

HTTP SemanticsRFC 9110, Section 15.5.17

417

EXPECTATION_FAILED

HTTP SemanticsRFC 9110, Section 15.5.18

418

IM_A_TEAPOT

HTCPCP/1.0RFC 2324,Section 2.3.2

421

MISDIRECTED_REQUEST

HTTP SemanticsRFC 9110, Section 15.5.20

422

UNPROCESSABLE_CONTENT

HTTP SemanticsRFC 9110, Section 15.5.21

423

LOCKED

WebDAVRFC 4918,11.3 節

424

FAILED_DEPENDENCY

WebDAVRFC 4918,11.4 節

425

TOO_EARLY

使用 HTTP 中的早期資料RFC 8470

426

UPGRADE_REQUIRED

HTTP SemanticsRFC 9110, Section 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

一個用來回報合法性障礙 (Legal Obstacles) 的 HTTP 狀態碼RFC 7725

500

INTERNAL_SERVER_ERROR

HTTP SemanticsRFC 9110, Section 15.6.1

501

NOT_IMPLEMENTED

HTTP SemanticsRFC 9110, Section 15.6.2

502

BAD_GATEWAY

HTTP SemanticsRFC 9110, Section 15.6.3

503

SERVICE_UNAVAILABLE

HTTP SemanticsRFC 9110, Section 15.6.4

504

GATEWAY_TIMEOUT

HTTP SemanticsRFC 9110, Section 15.6.5

505

HTTP_VERSION_NOT_SUPPORTED

HTTP SemanticsRFC 9110, Section 15.6.6

506

VARIANT_ALSO_NEGOTIATES

HTTP 中的透明內容協商 (Transparent Content Negotiation)RFC 2295,8.1 節(實驗性)

507

INSUFFICIENT_STORAGE

WebDAVRFC 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 版的變更:新增421MISDIRECTED_REQUEST 狀態碼。

在 3.8 版被加入:新增451UNAVAILABLE_FOR_LEGAL_REASONS 狀態碼。

在 3.9 版被加入:新增103EARLY_HINTS418IM_A_TEAPOT425TOO_EARLY 狀態碼。

在 3.13 版的變更:Implemented RFC9110 naming for status constants. Old constant names are preserved forbackwards compatibility.

HTTP 狀態分類

在 3.12 版被加入.

The enum values have several properties to indicate the HTTP status category:

Property

Indicates that

詳情

is_informational

100<=status<=199

HTTP SemanticsRFC 9110, Section 15

is_success

200<=status<=299

HTTP SemanticsRFC 9110, Section 15

is_redirection

300<=status<=399

HTTP SemanticsRFC 9110, Section 15

is_client_error

400<=status<=499

HTTP SemanticsRFC 9110, Section 15

is_server_error

500<=status<=599

HTTP SemanticsRFC 9110, Section 15

用法:

>>>fromhttpimportHTTPStatus>>>HTTPStatus.OK.is_successTrue>>>HTTPStatus.OK.is_client_errorFalse
classhttp.HTTPMethod

在 3.11 版被加入.

enum.StrEnum 的子類別,它定義了一組 HTTP 方法以及英文描述。

用法:

>>>fromhttpimportHTTPMethod>>>>>>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 方法

http.HTTPStatus 當中,已支援並且有於IANA 註冊的狀態碼有:

方法

列舉名稱

詳情

GET

GET

HTTP SemanticsRFC 9110, Section 9.3.1

HEAD

HEAD

HTTP SemanticsRFC 9110, Section 9.3.2

POST

POST

HTTP SemanticsRFC 9110, Section 9.3.3

PUT

PUT

HTTP SemanticsRFC 9110, Section 9.3.4

DELETE

DELETE

HTTP SemanticsRFC 9110, Section 9.3.5

CONNECT

CONNECT

HTTP SemanticsRFC 9110, Section 9.3.6

OPTIONS

OPTIONS

HTTP SemanticsRFC 9110, Section 9.3.7

TRACE

TRACE

HTTP SemanticsRFC 9110, Section 9.3.8

PATCH

PATCH

HTTP/1.1RFC 5789