21.11. http — HTTP模块

源码: Lib/http/__init__.py

http包用于处理超文本传输协议,包括下面几个模块:

http本身也是一个模块,它通过枚举类 http.HTTPStatus定义了一系列的HTTP状态码和相关信息。

class http.HTTPStatus

版本3.5中的新功能。

enum.IntEnum的子类,定义了一系列的HTTP状态码、原因短语和长文本描述。

示例:

>>> from http import HTTPStatus
>>> HTTPStatus.OK
<HTTPStatus.OK: 200>
>>> HTTPStatus.OK == 200
True
>>> http.HTTPStatus.OK.value
200
>>> HTTPStatus.OK.phrase
'OK'
>>> HTTPStatus.OK.description
'Request fulfilled, document follows'
>>> list(HTTPStatus)
[<HTTPStatus.CONTINUE: 100>, <HTTPStatus.SWITCHING_PROTOCOLS: 101>, ...]

21.11.1. HTTP状态码

http.HTTPStatus 中支持的状态码列表如下: (都已注册IANA,参考:IANA-registered

枚举名称细节
100CONTINUEHTTP / 1.1 RFC 7231,第6.2.1节
101SWITCHING_PROTOCOLSHTTP / 1.1 RFC 7231,第6.2.2节
102PROCESSINGWebDAV RFC 2518,第10.1节
200OKHTTP / 1.1 RFC 7231,第6.3.1节
201CREATEDHTTP / 1.1 RFC 7231,第6.3.2节
202ACCEPTEDHTTP / 1.1 RFC 7231,第6.3.3节
203NON_AUTHORITATIVE_INFORMATIONHTTP / 1.1 RFC 7231,第6.3.4节
204NO_CONTENTHTTP / 1.1 RFC 7231,第6.3.5节
205RESET_CONTENTHTTP / 1.1 RFC 7231,第6.3.6节
206PARTIAL_CONTENTHTTP / 1.1 RFC 7233,第4.1节
207MULTI_STATUSWebDAV RFC 4918,第11.1节
208ALREADY_REPORTEDWebDAV绑定扩展 RFC 5842,第7.1节(实验)
226IM_USEDHTTP中的增量编码 RFC 3229,第10.4.1节
300MULTIPLE_CHOICESHTTP / 1.1 RFC 7231,第6.4.1节
301MOVED_PERMANENTLYHTTP / 1.1 RFC 7231,第6.4.2节
302FOUNDHTTP / 1.1 RFC 7231,第6.4.3节
303SEE_OTHERHTTP / 1.1 RFC 7231,第6.4.4节
304NOT_MODIFIEDHTTP / 1.1 RFC 7232,第4.1节
305USE_PROXYHTTP / 1.1 RFC 7231,第6.4.5节
307TEMPORARY_REDIRECTHTTP / 1.1 RFC 7231,第6.4.7节
308PERMANENT_REDIRECT永久重定向 RFC 7238,第3节(实验)
400BAD_REQUESTHTTP / 1.1 RFC 7231,第6.5.1节
401UNAUTHORIZEDHTTP / 1.1认证 RFC 7235,第3.1节
402PAYMENT_REQUIREDHTTP / 1.1 RFC 7231,第6.5.2节
403FORBIDDENHTTP / 1.1 RFC 7231,第6.5.3节
404NOT_FOUNDHTTP / 1.1 RFC 7231,第6.5.4节
405METHOD_NOT_ALLOWEDHTTP / 1.1 RFC 7231,第6.5.5节
406NOT_ACCEPTABLEHTTP / 1.1 RFC 7231,第6.5.6节
407PROXY_AUTHENTICATION_REQUIREDHTTP / 1.1认证 RFC 7235,第3.2节
408REQUEST_TIMEOUTHTTP / 1.1 RFC 7231,第6.5.7节
409CONFLICTHTTP / 1.1 RFC 7231,第6.5.8节
410GONEHTTP / 1.1 RFC 7231,第6.5.9节
411LENGTH_REQUIREDHTTP / 1.1 RFC 7231,第6.5.10节
412PRECONDITION_FAILEDHTTP / 1.1 RFC 7232,第4.2节
413REQUEST_ENTITY_TOO_LARGEHTTP / 1.1 RFC 7231,第6.5.11节
414REQUEST_URI_TOO_LONGHTTP / 1.1 RFC 7231,第6.5.12节
415UNSUPPORTED_MEDIA_TYPEHTTP / 1.1 RFC 7231,第6.5.13节
416REQUEST_RANGE_NOT_SATISFIABLEHTTP / 1.1范围请求 RFC 7233,第4.4节
417EXPECTATION_FAILEDHTTP / 1.1 RFC 7231,第6.5.14节
422UNPROCESSABLE_ENTITYWebDAV RFC 4918,第11.2节
423LOCKEDWebDAV RFC 4918,第11.3节
424FAILED_DEPENDENCYWebDAV RFC 4918,第11.4节
426UPGRADE_REQUIREDHTTP / 1.1 RFC 7231,第6.5.15节
428PRECONDITION_REQUIRED其他HTTP状态码 RFC 6585
429TOO_MANY_REQUESTS其他HTTP状态码 RFC 6585
431REQUEST_HEADER_FIELDS_TOO_LARGE其他HTTP状态码 RFC 6585
500INTERNAL_SERVER_ERRORHTTP / 1.1 RFC 7231,第6.6.1节
501NOT_IMPLEMENTEDHTTP / 1.1 RFC 7231,第6.6.2节
502BAD_GATEWAYHTTP / 1.1 RFC 7231,第6.6.3节
503SERVICE_UNAVAILABLEHTTP / 1.1 RFC 7231,第6.6.4节
504GATEWAY_TIMEOUTHTTP / 1.1 RFC 7231,第6.6.5节
505HTTP_VERSION_NOT_SUPPORTEDHTTP / 1.1 RFC 7231,第6.6.6节
506VARIANT_ALSO_NEGOTIATESHTTP中的透明内容协商 RFC 2295,第8.1节(实验)
507INSUFFICIENT_STORAGEWebDAV RFC 4918,第11.5节
508LOOP_DETECTEDWebDAV绑定扩展 RFC 5842,第7.2节(实验)
510NOT_EXTENDEDHTTP扩展框架 RFC 2774,第7节(实验)
511NETWORK_AUTHENTICATION_REQUIRED其他HTTP状态代码 RFC 6585,第6节

为了保持向下兼容性,枚举值也以常量形式存在于http.client模块中。枚举名称就等于常量的名称。比如:http.HTTPStatus.OK就等于 http.client.OK