http --- HTTP 模块

源代码: Lib/http/__init__.py


http 是一个包,它汇集了几个用于处理超文本传输协议 (HyperText Transfer Protocol) 的模块。

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

HTTP 状态码

http.HTTPStatus 中可用的、受支持的、IANA-注册的状态码如下

代码

枚举名称

详情

100

CONTINUE

HTTP Semantics RFC 9110,第 15.2.1 节

101

SWITCHING_PROTOCOLS

HTTP Semantics RFC 9110,第 15.2.2 节

102

PROCESSING

WebDAV RFC 2518,第 10.1 节

103

EARLY_HINTS

An HTTP Status Code for Indicating Hints RFC 8297

200

OK

HTTP Semantics RFC 9110,第 15.3.1 节

201

CREATED

HTTP Semantics RFC 9110,第 15.3.2 节

202

ACCEPTED

HTTP Semantics RFC 9110,第 15.3.3 节

203

NON_AUTHORITATIVE_INFORMATION

HTTP Semantics RFC 9110,第 15.3.4 节

204

NO_CONTENT

HTTP Semantics RFC 9110,第 15.3.5 节

205

RESET_CONTENT

HTTP Semantics RFC 9110,第 15.3.6 节

206

PARTIAL_CONTENT

HTTP Semantics RFC 9110,第 15.3.7 节

207

MULTI_STATUS

WebDAV RFC 4918,第 11.1 节

208

ALREADY_REPORTED

WebDAV Binding Extensions RFC 5842,第 7.1 节 (实验性)

226

IM_USED

Delta Encoding in HTTP RFC 3229,第 10.4.1 节

300

MULTIPLE_CHOICES

HTTP Semantics RFC 9110,第 15.4.1 节

301

MOVED_PERMANENTLY

HTTP Semantics RFC 9110,第 15.4.2 节

302

FOUND

HTTP Semantics RFC 9110,第 15.4.3 节

303

SEE_OTHER

HTTP Semantics RFC 9110,第 15.4.4 节

304

NOT_MODIFIED

HTTP Semantics RFC 9110,第 15.4.5 节

305

USE_PROXY

HTTP Semantics RFC 9110,第 15.4.6 节

307

TEMPORARY_REDIRECT

HTTP Semantics RFC 9110,第 15.4.8 节

308

PERMANENT_REDIRECT

HTTP Semantics RFC 9110,第 15.4.9 节

400

BAD_REQUEST

HTTP Semantics RFC 9110,第 15.5.1 节

401

UNAUTHORIZED

HTTP Semantics RFC 9110,第 15.5.2 节

402

PAYMENT_REQUIRED

HTTP Semantics RFC 9110,第 15.5.3 节

403

FORBIDDEN

HTTP Semantics RFC 9110,第 15.5.4 节

404

NOT_FOUND

HTTP Semantics RFC 9110,第 15.5.5 节

405

METHOD_NOT_ALLOWED

HTTP Semantics RFC 9110,第 15.5.6 节

406

NOT_ACCEPTABLE

HTTP Semantics RFC 9110,第 15.5.7 节

407

PROXY_AUTHENTICATION_REQUIRED

HTTP Semantics RFC 9110,第 15.5.8 节

408

REQUEST_TIMEOUT

HTTP Semantics RFC 9110,第 15.5.9 节

409

CONFLICT

HTTP Semantics RFC 9110,第 15.5.10 节

410

GONE

HTTP Semantics RFC 9110,第 15.5.11 节

411

LENGTH_REQUIRED

HTTP Semantics RFC 9110,第 15.5.12 节

412

PRECONDITION_FAILED

HTTP Semantics RFC 9110,第 15.5.13 节

413

CONTENT_TOO_LARGE

HTTP Semantics RFC 9110,第 15.5.14 节

414

URI_TOO_LONG

HTTP Semantics RFC 9110,第 15.5.15 节

415

UNSUPPORTED_MEDIA_TYPE

HTTP Semantics RFC 9110,第 15.5.16 节

416

RANGE_NOT_SATISFIABLE

HTTP Semantics RFC 9110,第 15.5.17 节

417

EXPECTATION_FAILED

HTTP Semantics RFC 9110,第 15.5.18 节

418

IM_A_TEAPOT

HTCPCP/1.0 RFC 2324,第 2.3.2 节

421

MISDIRECTED_REQUEST

HTTP Semantics RFC 9110,第 15.5.20 节

422

UNPROCESSABLE_CONTENT

HTTP Semantics RFC 9110,第 15.5.21 节

423

LOCKED

WebDAV RFC 4918,第 11.3 节

424

FAILED_DEPENDENCY

WebDAV RFC 4918,第 11.4 节

425

TOO_EARLY

Using Early Data in HTTP RFC 8470

426

UPGRADE_REQUIRED

HTTP Semantics RFC 9110,第 15.5.22 节

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

451

UNAVAILABLE_FOR_LEGAL_REASONS

An HTTP Status Code to Report Legal Obstacles RFC 7725

500

INTERNAL_SERVER_ERROR

HTTP Semantics RFC 9110,第 15.6.1 节

501

NOT_IMPLEMENTED

HTTP Semantics RFC 9110,第 15.6.2 节

502

BAD_GATEWAY

HTTP Semantics RFC 9110,第 15.6.3 节

503

SERVICE_UNAVAILABLE

HTTP Semantics RFC 9110,第 15.6.4 节

504

GATEWAY_TIMEOUT

HTTP Semantics RFC 9110,第 15.6.5 节

505

HTTP_VERSION_NOT_SUPPORTED

HTTP Semantics RFC 9110,第 15.6.6 节

506

VARIANT_ALSO_NEGOTIATES

Transparent Content Negotiation in HTTP RFC 2295,第 8.1 节 (实验性)

507

INSUFFICIENT_STORAGE

WebDAV RFC 4918,第 11.5 节

508

LOOP_DETECTED

WebDAV Binding Extensions RFC 5842,第 7.2 节 (实验性)

510

NOT_EXTENDED

An HTTP Extension Framework RFC 2774,第 7 节 (实验性)

511

NETWORK_AUTHENTICATION_REQUIRED

Additional HTTP Status Codes 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_HINTS418 IM_A_TEAPOT425 TOO_EARLY 状态码。

在 3.13 版本发生变更: 为状态常量实现了 RFC9110 命名。旧的常量名被保留以实现向后兼容性:413 REQUEST_ENTITY_TOO_LARGE414 REQUEST_URI_TOO_LONG416 REQUESTED_RANGE_NOT_SATISFIABLE422 UNPROCESSABLE_ENTITY

HTTP 状态类别

3.12 新版功能.

枚举值有几个属性来指示 HTTP 状态类别

属性

表明

详情

is_informational

100 <= status <= 199

HTTP Semantics RFC 9110,第 15 节

is_success

200 <= status <= 299

HTTP Semantics RFC 9110,第 15 节

is_redirection

300 <= status <= 399

HTTP Semantics RFC 9110,第 15 节

is_client_error

400 <= status <= 499

HTTP Semantics RFC 9110,第 15 节

is_server_error

500 <= status <= 599

HTTP Semantics RFC 9110,第 15 节

用法

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

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

http.HTTPMethod 中可用的、受支持的、IANA-注册的方法如下

方法

枚举名称

详情

GET

GET

HTTP Semantics RFC 9110,第 9.3.1 节

HEAD

HEAD

HTTP Semantics RFC 9110,第 9.3.2 节

POST

POST

HTTP Semantics RFC 9110,第 9.3.3 节

PUT

PUT

HTTP Semantics RFC 9110,第 9.3.4 节

DELETE

DELETE

HTTP Semantics RFC 9110,第 9.3.5 节

CONNECT

CONNECT

HTTP Semantics RFC 9110,第 9.3.6 节

OPTIONS

OPTIONS

HTTP Semantics RFC 9110,第 9.3.7 节

TRACE

TRACE

HTTP Semantics RFC 9110,第 9.3.8 节

PATCH

PATCH

HTTP/1.1 RFC 5789