http — HTTP 모듈
http — HTTP 모듈
http는 HyperText Transfer Protocol을 다루는 여러 모듈을 모아 놓은 패키지예요:
http.client— 저수준 HTTP 프로토콜 클라이언트. 고수준 URL 열기는urllib.request를 사용해요.http.server—socketserver에 기반한 기본 HTTP 서버 클래스.http.cookies— 쿠키로 상태 관리를 구현하는 유틸리티.http.cookiejar— 쿠키의 영속성 제공.
http 모듈은 또한 HTTP 관련 코드를 다룰 때 도움이 되는 다음 열거형(enum)을 정의해요.
본문
클래스
class http.HTTPStatus — enum.IntEnum의 하위 클래스로, 영어로 작성된 HTTP 상태 코드, 이유 구문(reason phrase), 그리고 긴 설명 집합을 정의해요. 버전 3.5에서 추가됨.
사용 예시:
>>> 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 Semantics RFC 9110, Section 15.2.1 |
200 |
OK |
HTTP Semantics RFC 9110, Section 15.3.1 |
301 |
MOVED_PERMANENTLY |
HTTP Semantics RFC 9110, Section 15.4.2 |
400 |
BAD_REQUEST |
HTTP Semantics RFC 9110, Section 15.5.1 |
403 |
FORBIDDEN |
HTTP Semantics RFC 9110, Section 15.5.4 |
404 |
NOT_FOUND |
HTTP Semantics RFC 9110, Section 15.5.5 |
418 |
IM_A_TEAPOT |
HTCPCP/1.0 RFC 2324, Section 2.3.2 |
500 |
INTERNAL_SERVER_ERROR |
HTTP Semantics RFC 9110, Section 15.6.1 |
503 |
SERVICE_UNAVAILABLE |
HTTP Semantics RFC 9110, Section 15.6.4 |
하위 호환성을 유지하기 위해 열거형 값은 http.client 모듈에도 상수 형태로 존재해요. 열거형 이름은 상수 이름과 같아요(예: http.HTTPStatus.OK는 http.client.OK로도 사용 가능).
HTTP 상태 카테고리
버전 3.12에서 추가됨. 열거형 값에는 HTTP 상태 카테고리를 나타내는 여러 속성이 있어요:
| 속성 | 나타내는 것 |
|---|---|
is_informational |
100 <= status <= 199 |
is_success |
200 <= status <= 299 |
is_redirection |
300 <= status <= 399 |
is_client_error |
400 <= status <= 499 |
is_server_error |
500 <= status <= 599 |
사용 예시:
>>> HTTPStatus.OK.is_success
True
>>> HTTPStatus.OK.is_client_error
False
class http.HTTPMethod — enum.StrEnum의 하위 클래스로, 영어로 작성된 HTTP 메서드와 설명 집합을 정의해요. 버전 3.11에서 추가됨.
>>> from http import HTTPMethod
>>> HTTPMethod.GET
<HTTPMethod.GET>
>>> HTTPMethod.GET == 'GET'
True
>>> HTTPMethod.GET.description
'Retrieve the target.'
HTTP 메서드
http.HTTPMethod에 포함된, IANA에 등록된 지원 메서드는 다음과 같아요: GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH.