http — HTTP 模块

源代码: Lib/http/__init__.py


http 是一个包,它收集了几个用于处理超文本传输协议的模块

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 状态码

支持的、IANA 注册的状态码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 状态码。

在 3.8 版本中添加: 添加了 451 UNAVAILABLE_FOR_LEGAL_REASONS 状态码。

在 3.9 版本中添加: 添加了 103 EARLY_HINTS418 IM_A_TEAPOT425 TOO_EARLY 状态码。

在 3.13 版本中更改: 为状态常量实现了 RFC9110 命名。旧的常量名称为了保持向后兼容性而保留。

HTTP 状态类别

在 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

在 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 注册的方法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