http —- HTTP 模块
源代码:Lib/http/init.py
http
是一个包,它收集了多个用于处理超文本传输协议的模块:
http.client
是一个低层级的 HTTP 协议客户端;对于高层级的 URL 访问请使用urllib.request
http.server
包含基于socketserver
的基本 HTTP 服务类http.cookies
包含一些有用来实现通过 cookies 进行状态管理的工具http.cookiejar
提供了 cookies 的持久化
http
也是一个通过 http.HTTPStatus
枚举定义了一些 HTTP 状态码以及相关联消息的模块
3.5 新版功能.
enum.IntEnum
的子类,它定义了组 HTTP 状态码,原理短语以及用英语书写的长描述文本。
用法:
- >>> from http import HTTPStatus
- >>> HTTPStatus.OK
- <HTTPStatus.OK: 200>
- >>> HTTPStatus.OK == 200
- True
- >>> HTTPStatus.OK.value
- 200
- >>> HTTPStatus.OK.phrase
- 'OK'
- >>> HTTPStatus.OK.description
- 'Request fulfilled, document follows'
- >>> list(HTTPStatus)
- [<HTTPStatus.CONTINUE: 100>, <HTTPStatus.SWITCHING_PROTOCOLS: 101>, ...]
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 节 |
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 Binding Extensions RFC 5842, 7.1 节(实验性) |
226 | IM_USED | Delta Encoding in 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 :永久重定向 | 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, 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 Authentication RFC 7235, 3.1 节 |
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 :请求URI太长了 | 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 Range Requests RFC 7233, 4.4 节 |
417 | EXPECTATION_FAILED :期望失败 | HTTP/1.1 RFC 7231, 6.5.14 节 |
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 节 |
426 | UPGRADE_REQUIRED :升级需要 | HTTP/1.1 RFC 7231, 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 | 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版本不支持 | 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 Binding Extensions RFC 5842, 7.2 节(实验性) |
510 | NOT_EXTENDED :不扩展 | WebDAV Binding Extensions RFC 5842, 7.2 节(实验性) |
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
状态码。