"http" --- HTTP modules
***********************

**소스 코드:** Lib/http/__init__.py

======================================================================

"http"는 하이퍼텍스트 전송 프로토콜로 작업 하기 위한 여러 모듈을 수집
하는 패키지입니다:

* "http.client"는 저수준 HTTP 프로토콜 클라이언트입니다. 고수준의 URL
  열기는 "urllib.request"를 사용합니다

* "http.server"는 "socketserver"에 기반을 둔 기본적인 HTTP 서버 클래스
  를 포함합니다

* "http.cookies"는 쿠키를 사용하여 상태 관리를 구현하는 유틸리티가 있
  습니다

* "http.cookiejar"는 쿠키의 지속성을 제공합니다

또한 "http" 모듈은 http 관련 코드 작업에 도움이 되는 다음 열거형을 정
의합니다:

class http.HTTPStatus

   버전 3.5에 추가.

   HTTP 상태 코드, 이유 구문 그리고 긴 영문 설명의 집합을 정의하는
   "enum.IntEnum"의 서브 클래스입니다.

   사용법:

      >>> 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/1.1 **RFC 7231**, Section 6.2.1                                            |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "101"   | "SWITCHING_PROTOCOLS"               | HTTP/1.1 **RFC 7231**, Section 6.2.2                                            |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "102"   | "PROCESSING"                        | WebDAV **RFC 2518**, 섹션 10.1                                                  |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "103"   | "EARLY_HINTS"                       | 힌트를 나타내는 HTTP 상태 코드 **RFC 8297**                                     |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "200"   | "OK"                                | HTTP/1.1 **RFC 7231**, Section 6.3.1                                            |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "201"   | "CREATED"                           | HTTP/1.1 **RFC 7231**, Section 6.3.2                                            |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "202"   | "ACCEPTED"                          | HTTP/1.1 **RFC 7231**, Section 6.3.3                                            |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "203"   | "NON_AUTHORITATIVE_INFORMATION"     | HTTP/1.1 **RFC 7231**, Section 6.3.4                                            |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "204"   | "NO_CONTENT"                        | HTTP/1.1 **RFC 7231**, Section 6.3.5                                            |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "205"   | "RESET_CONTENT"                     | HTTP/1.1 **RFC 7231**, Section 6.3.6                                            |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "206"   | "PARTIAL_CONTENT"                   | HTTP/1.1 **RFC 7233**, Section 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**, Section 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**, Section 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**, 섹션 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**, 섹션 11.3                                                  |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "424"   | "FAILED_DEPENDENCY"                 | WebDAV **RFC 4918**, 섹션 11.4                                                  |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "425"   | "TOO_EARLY"                         | HTTP에서 초기 데이터(Early Data) 사용 **RFC 8470**                              |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "426"   | "UPGRADE_REQUIRED"                  | HTTP/1.1 **RFC 7231**, Section 6.5.15                                           |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "428"   | "PRECONDITION_REQUIRED"             | 추가 HTTP 상태 코드 **RFC 6585**                                                |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "429"   | "TOO_MANY_REQUESTS"                 | 추가 HTTP 상태 코드 **RFC 6585**                                                |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "431"   | "REQUEST_HEADER_FIELDS_TOO_LARGE"   | 추가 HTTP 상태 코드 **RFC 6585**                                                |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "451"   | "UNAVAILABLE_FOR_LEGAL_REASONS"     | 법적 장애를 보고하는 HTTP 상태 코드 **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**, Section 6.6.6                                            |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "506"   | "VARIANT_ALSO_NEGOTIATES"           | HTTP의 투명한 콘텐츠 협상 **RFC 2295**, 섹션 8.1 (실험적)                       |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "507"   | "INSUFFICIENT_STORAGE"              | WebDAV **RFC 4918**, 섹션 11.5                                                  |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "508"   | "LOOP_DETECTED"                     | WebDAV 바인딩 확장 **RFC 5842**, 섹션 7.2 (실험적)                              |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "510"   | "NOT_EXTENDED"                      | HTTP 확장 프레임워크 **RFC 2774**, 섹션 7 (실험적)                              |
+---------+-------------------------------------+---------------------------------------------------------------------------------+
| "511"   | "NETWORK_AUTHENTICATION_REQUIRED"   | 추가 HTTP 상태 코드 **RFC 6585**, 섹션 6                                        |
+---------+-------------------------------------+---------------------------------------------------------------------------------+

이전 버전과의 호환성을 유지하기 위해 열거값은 "http.client" 모듈에 상
수 형태로도 있습니다. 열거명과 상수명은 동일합니다 (즉,
"http.HTTPStatus.OK"는 "http.client.OK"로도 사용 가능합니다).

버전 3.7에서 변경: "421 MISDIRECTED_REQUEST" 상태 코드 추가.

버전 3.8에 추가: "451 UNAVAILABLE_FOR_LEGAL_REASONS" 상태 코드가 추가.

버전 3.9에 추가: "103 EARLY_HINTS", "418 IM_A_TEAPOT" 및 "425
TOO_EARLY" 상태 코드가 추가되었습니다.

class http.HTTPMethod

   버전 3.11에 추가.

   HTTP 메서드와 영문 설명의 집합을 정의하는 "enum.StrEnum"의 서브 클
   래스입니다.

   사용법:

      >>> from http import HTTPMethod
      >>>
      >>> HTTPMethod.GET
      <HTTPMethod.GET>
      >>> HTTPMethod.GET == 'GET'
      True
      >>> HTTPMethod.GET.value
      'GET'
      >>> HTTPMethod.GET.description
      'Retrieve the target.'
      >>> list(HTTPMethod)
      [<HTTPMethod.CONNECT>,
       <HTTPMethod.DELETE>,
       <HTTPMethod.GET>,
       <HTTPMethod.HEAD>,
       <HTTPMethod.OPTIONS>,
       <HTTPMethod.PATCH>,
       <HTTPMethod.POST>,
       <HTTPMethod.PUT>,
       <HTTPMethod.TRACE>]


HTTP 메서드
===========

"http.HTTPMethod"에서 지원하는 IANA에 등록된 메서드는 다음과 같습니다:

+-------------+-------------------------------------+--------------------------------------------------------------------+
| 메서드      | 열거 이름                           | 세부 사항                                                          |
|=============|=====================================|====================================================================|
| "GET"       | "GET"                               | HTTP/1.1 **RFC 7231**, Section 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**                                              |
+-------------+-------------------------------------+--------------------------------------------------------------------+
