http — HTTP 모듈

http — HTTP 모듈

http는 HyperText Transfer Protocol을 다루는 여러 모듈을 모아 놓은 패키지예요:

  • http.client — 저수준 HTTP 프로토콜 클라이언트. 고수준 URL 열기는 urllib.request를 사용해요.
  • http.serversocketserver에 기반한 기본 HTTP 서버 클래스.
  • http.cookies — 쿠키로 상태 관리를 구현하는 유틸리티.
  • http.cookiejar — 쿠키의 영속성 제공.

http 모듈은 또한 HTTP 관련 코드를 다룰 때 도움이 되는 다음 열거형(enum)을 정의해요.

출처: Python documentation

본문

클래스

class http.HTTPStatusenum.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.OKhttp.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.HTTPMethodenum.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.

더 알아보기 (Learn more)