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

http.HTTPStatus 中提供的受支持的、IANA 注册状态码 如下:

代码

枚举名称

详情

100

CONTINUE

HTTP/1.1 RFC 7231,第 6.2.1 节

101

SWITCHING_PROTOCOLS

HTTP/1.1 RFC 7231,第 6.2.2 节

102

PROCESSING

WebDAV RFC 2518,第 10.1 节

103

EARLY_HINTS

用于指示提示的 HTTP 状态码 RFC 8297

200

OK

HTTP/1.1 RFC 7231,第 6.3.1 节

201

CREATED

HTTP/1.1 RFC 7231,第 6.3.2 节

202

ACCEPTED

HTTP/1.1 RFC 7231,第 6.3.3 节

203

NON_AUTHORITATIVE_INFORMATION

HTTP/1.1 RFC 7231,第 6.3.4 节

204

NO_CONTENT

HTTP/1.1 RFC 7231,第 6.3.5 节

205

RESET_CONTENT

HTTP/1.1 RFC 7231,第 6.3.6 节

206

PARTIAL_CONTENT

HTTP/1.1 RFC 7233,第 4.1 节

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/1.1 RFC 7231,第 6.4.1 节

301

MOVED_PERMANENTLY

HTTP/1.1 RFC 7231,第 6.4.2 节

302

FOUND

HTTP/1.1 RFC 7231,第 6.4.3 节

303

SEE_OTHER

HTTP/1.1 RFC 7231,第 6.4.4 节

304

NOT_MODIFIED

HTTP/1.1 RFC 7232,第 4.1 节

305

USE_PROXY

HTTP/1.1 RFC 7231,第 6.4.5 节

307

TEMPORARY_REDIRECT

HTTP/1.1 RFC 7231,第 6.4.7 节

308

PERMANENT_REDIRECT

永久重定向 RFC 7238,第 3 节(实验性)

400

BAD_REQUEST

HTTP/1.1 RFC 7231,第 6.5.1 节

401

UNAUTHORIZED

HTTP/1.1 身份验证 RFC 7235,第 3.1 节

402

PAYMENT_REQUIRED

HTTP/1.1 RFC 7231,第 6.5.2 节

403

FORBIDDEN

HTTP/1.1 RFC 7231,第 6.5.3 节

404

NOT_FOUND

HTTP/1.1 RFC 7231,第 6.5.4 节

405

METHOD_NOT_ALLOWED

HTTP/1.1 RFC 7231,第 6.5.5 节

406

NOT_ACCEPTABLE

HTTP/1.1 RFC 7231,第 6.5.6 节

407

PROXY_AUTHENTICATION_REQUIRED

HTTP/1.1 身份验证 RFC 7235,第 3.2 节

408

REQUEST_TIMEOUT

HTTP/1.1 RFC 7231,第 6.5.7 节

409

CONFLICT

HTTP/1.1 RFC 7231,第 6.5.8 节

410

GONE

HTTP/1.1 RFC 7231,第 6.5.9 节

411

LENGTH_REQUIRED

HTTP/1.1 RFC 7231,第 6.5.10 节

412

PRECONDITION_FAILED

HTTP/1.1 RFC 7232,第 4.2 节

413

REQUEST_ENTITY_TOO_LARGE

HTTP/1.1 RFC 7231,第 6.5.11 节

414

REQUEST_URI_TOO_LONG

HTTP/1.1 RFC 7231,第 6.5.12 节

415

UNSUPPORTED_MEDIA_TYPE

HTTP/1.1 RFC 7231,第 6.5.13 节

416

REQUESTED_RANGE_NOT_SATISFIABLE

HTTP/1.1 范围请求 RFC 7233,第 4.4 节

417

EXPECTATION_FAILED

HTTP/1.1 RFC 7231,第 6.5.14 节

418

IM_A_TEAPOT

HTCPCP/1.0 RFC 2324,第 2.3.2 节

421

MISDIRECTED_REQUEST

HTTP/2 RFC 7540,第 9.1.2 节

422

UNPROCESSABLE_ENTITY

WebDAV RFC 4918,第 11.2 节

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/1.1 RFC 7231,第 6.5.15 节

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/1.1 RFC 7231,第 6.6.1 节

501

NOT_IMPLEMENTED

HTTP/1.1 RFC 7231,第 6.6.2 节

502

BAD_GATEWAY

HTTP/1.1 RFC 7231,第 6.6.3 节

503

SERVICE_UNAVAILABLE

HTTP/1.1 RFC 7231,第 6.6.4 节

504

GATEWAY_TIMEOUT

HTTP/1.1 RFC 7231,第 6.6.5 节

505

HTTP_VERSION_NOT_SUPPORTED

HTTP/1.1 RFC 7231,第 6.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 状态码。

HTTP 状态类别

版本 3.12 中的新功能。

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

属性

指示

详情

is_informational

100 <= status <= 199

HTTP/1.1 RFC 7231,第 6 节

is_success

200 <= status <= 299

HTTP/1.1 RFC 7231,第 6 节

is_redirection

300 <= status <= 399

HTTP/1.1 RFC 7231,第 6 节

is_client_error

400 <= status <= 499

HTTP/1.1 RFC 7231,第 6 节

is_server_error

500 <= status <= 599

HTTP/1.1 RFC 7231,第 6 节

用法

>>> 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/1.1 RFC 7231,第 4.3.1 节

HEAD

HEAD

HTTP/1.1 RFC 7231,第 4.3.2 节

POST

POST

HTTP/1.1 RFC 7231,第 4.3.3 节

PUT

PUT

HTTP/1.1 RFC 7231,第 4.3.4 节

DELETE

DELETE

HTTP/1.1 RFC 7231,第 4.3.5 节

CONNECT

CONNECT

HTTP/1.1 RFC 7231,第 4.3.6 节

OPTIONS

OPTIONS

HTTP/1.1 RFC 7231,第 4.3.7 节

TRACE

TRACE

HTTP/1.1 RFC 7231,第 4.3.8 节

PATCH

PATCH

HTTP/1.1 RFC 5789