http
— HTTP 模块
¶
源代码: Lib/http/__init__.py
http
是集合了几个操控 HTTP (超文本传输协议) 模块的包:
http.client
是低级 HTTP 协议客户端;对于高级 URL 打开使用
urllib.request
http.server
包含基本 HTTP 服务器类基于
socketserver
http.cookies
是拥有管理 Cookie 实现状态的实用工具
http.cookiejar
提供 Cookie 的持久性
http
模块还定义了下列帮助操控 HTTP 相关代码的枚举:
3.5 版新增。
子类化的
enum.IntEnum
that defines a set of HTTP status codes, reason phrases and long descriptions written in English.
用法:
>>> 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, ...]
支持,
IANA-registered status codes
available in
http.HTTPStatus
是:
| 代码 | 枚举名称 | 细节 |
|---|---|---|
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 , 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 ,章节 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 (Experimental) |
400
|
BAD_REQUEST
|
HTTP/1.1 RFC 7231 ,章节 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
|
REQUESTED_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 |
418
|
IM_A_TEAPOT
|
HTCPCP/1.0 RFC 2324 , Section 2.3.2 |
421
|
MISDIRECTED_REQUEST
|
HTTP/2 RFC 7540 , Section 9.1.2 |
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 |
425
|
TOO_EARLY
|
Using Early Data in HTTP RFC 8470 |
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 |
451
|
UNAVAILABLE_FOR_LEGAL_REASONS
|
An HTTP Status Code to Report Legal Obstacles RFC 7725 |
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 ,章节 6.6.6 |
506
|
VARIANT_ALSO_NEGOTIATES
|
Transparent Content Negotiation in HTTP RFC 2295 , Section 8.1 (Experimental) |
507
|
INSUFFICIENT_STORAGE
|
WebDAV RFC 4918 , Section 11.5 |
508
|
LOOP_DETECTED
|
WebDAV 绑定扩展 RFC 5842 , Section 7.2 (Experimental) |
510
|
NOT_EXTENDED
|
An HTTP Extension Framework RFC 2774 , Section 7 (Experimental) |
511
|
NETWORK_AUTHENTICATION_REQUIRED
|
Additional HTTP Status Codes RFC 6585 ,章节 6 |
In order to preserve backwards compatibility, enum values are also present in the
http.client
module in the form of constants. The enum name is equal to the constant name (i.e.
http.HTTPStatus.OK
is also available as
http.client.OK
).
3.7 版改变:
添加
421 MISDIRECTED_REQUEST
状态码。
3.8 版新增:
添加
451 UNAVAILABLE_FOR_LEGAL_REASONS
状态码。
3.9 版新增:
添加
103 EARLY_HINTS
,
418 IM_A_TEAPOT
and
425 TOO_EARLY
状态码。
3.11 版新增。
子类化的
enum.StrEnum
that defines a set of HTTP methods and descriptions written in English.
用法:
>>> from http import HTTPMethod >>> HTTMethod.GET HTTMethod.GET >>> HTTMethod.GET == 'GET' True >>> HTTMethod.GET.value 'GET' >>> HTTMethod.GET.description 'Transfer a current representation of the target resource.' >>> list(HTTPMethod) [HTTPMethod.GET, HTTPMethod.HEAD, ...]
支持,
IANA-registered methods
available in
http.HTTPMethod
是:
| 方法 | 枚举名称 | 细节 |
|---|---|---|
GET
|
GET
|
HTTP/1.1 RFC 7231 ,章节 4.3.1 |
HEAD
|
HEAD
|
HTTP/1.1 RFC 7231 , Section 4.3.2 |
POST
|
POST
|
HTTP/1.1 RFC 7231 , Section 4.3.3 |
PUT
|
PUT
|
HTTP/1.1 RFC 7231 , Section 4.3.4 |
DELETE
|
DELETE
|
HTTP/1.1 RFC 7231 , Section 4.3.5 |
CONNECT
|
CONNECT
|
HTTP/1.1 RFC 7231 , Section 4.3.6 |
OPTIONS
|
OPTIONS
|
HTTP/1.1 RFC 7231 , Section 4.3.7 |
TRACE
|
TRACE
|
HTTP/1.1 RFC 7231 , Section 4.3.8 |
PATCH
|
PATCH
|
HTTP/1.1 RFC 5789 |