6.4. 콘텐츠
HTTP 메시지는 종종 메시지의 콘텐츠로서 완전하거나 부분적인 표현을 전송합니다: 헤더 섹션 이후, 메시지 프레이밍으로 구분된 옥텟 스트림입니다.
이 추상적 정의의 콘텐츠는 메시지 프레이밍에서 추출된 후의 데이터를 반영합니다. 예를 들어, HTTP/1.1 메시지 본문(Section 6 of [HTTP/1.1])은 chunked 전송 인코딩으로 인코딩된 데이터 스트림(데이터 청크의 시퀀스, 하나의 제로 길이 청크, 그리고 트레일러 섹션)으로 구성될 수 있지만, 동일한 메시지의 콘텐츠는 전송 인코딩이 디코딩된 이후의 데이터 스트림만 포함하며 청크 길이, chunked 프레이밍 구문, 또는 트레일러 필드는 포함하지 않습니다(섹션 6.5).
6.4.1. 콘텐츠 의미
요청의 콘텐츠 목적은 메서드 의미(섹션 9)에 의해 정의됩니다.
예를 들어, PUT 요청의 콘텐츠에 있는 표현(섹션 9.3.4)은 요청이 성공적으로 적용된 이후의 대상 리소스의 원하는 상태를 나타내고, POST 요청의 콘텐츠에 있는 표현(섹션 9.3.3)은 대상 리소스가 처리할 정보를 나타냅니다.
응답에서 콘텐츠의 목적은 요청 메서드, 응답 상태 코드(섹션 15) 및 그 콘텐츠를 설명하는 응답 필드에 의해 정의됩니다. 예를 들어, GET에 대한 200 (OK) 응답의 콘텐츠는 메시지 생성 시점(섹션 6.6.1)에 관찰된 대상 리소스의 현재 상태를 나타내는 반면, 동일한 상태 코드의 POST에 대한 응답에서의 콘텐츠는 처리 결과 또는 처리를 적용한 이후의 대상 리소스의 새 상태를 나타낼 수 있습니다.
206 (Partial Content) 응답의 콘텐츠는 GET에 대해 선택된 표현의 단일 부분이거나 그 표현의 여러 부분을 포함하는 multipart 메시지 본문을 포함합니다(섹션 15.3.7 참조).
오류 상태 코드를 가진 응답 메시지는 일반적으로 오류 상태를 나타내는 콘텐츠를 포함하며, 그 콘텐츠는 오류 상태와 이를 해결하기 위해 권장되는 단계를 설명합니다.
HEAD 요청 메서드에 대한 응답은 결코 콘텐츠를 포함하지 않습니다; 관련 응답 헤더 필드는 요청 메서드가 GET이었다면 그 값이 무엇이 되었을지를 나타내기만 합니다(섹션 9.3.1).
2xx (Successful) 응답 중 CONNECT 요청 메서드(섹션 9.3.6에 대한 응답)는 콘텐츠 대신 연결을 터널 모드로 전환합니다.
모든 1xx (Informational), 204 (No Content), 및 304 (Not Modified) 응답은 콘텐츠를 포함하지 않습니다.
그 외의 모든 응답은 콘텐츠를 포함하지만, 그 콘텐츠의 길이가 0일 수 있습니다.
6.4.2. 콘텐츠 식별
완전하거나 부분적인 표현이 메시지 콘텐츠로 전송될 때, 송신자가 해당 특정 표현에 해당하는 리소스의 식별자를 제공하거나 수신자가 이를 결정하는 것이 종종 바람직합니다. 예를 들어, "현재 기상 보고" 리소스에 대해 GET 요청을 하는 클라이언트는 반환된 콘텐츠에 특정한 식별자(예: "20210720T1711의 Laguna Beach 기상 보고")를 원할 수 있습니다. 이는 시간이 지남에 따라 표현이 변경될 것으로 예상되는 리소스에서 콘텐츠를 공유하거나 북마크하는 데 유용할 수 있습니다.
요청 메시지의 경우:
- 요청에 Content-Location 헤더 필드가 있는 경우, 송신자는 콘텐츠가 Content-Location 필드 값으로 식별된 리소스의 표현임을 주장합니다. 다만 그러한 주장은 이 명세서에서 정의하지 않는 다른 수단으로 검증되지 않는 한 신뢰할 수 없습니다. 그 정보는 개정 이력 링크에 유용할 수 있습니다.
- 그렇지 않으면 콘텐츠는 HTTP에 의해 식별되지 않으며, 더 구체적인 식별자는 콘텐츠 자체 내에 제공될 수 있습니다.
응답 메시지의 경우, 다음 규칙들이 일치하는 항목이 발견될 때까지 순서대로 적용됩니다:
- 요청 메서드가 HEAD이거나 응답 상태 코드가 204 (No Content) 또는 304 (Not Modified)이면 응답에 콘텐츠가 없습니다.
- 요청 메서드가 GET이고 응답 상태 코드가 200 (OK)이면, 콘텐츠는 대상 리소스의 표현입니다(섹션 7.1 참조).
- 요청 메서드가 GET이고 응답 상태 코드가 203 (Non-Authoritative Information)이면, 콘텐츠는 중개자가 제공하는 대상 리소스의 잠재적으로 수정되거나 향상된 표현일 수 있습니다.
- 요청 메서드가 GET이고 응답 상태 코드가 206 (Partial Content)이면, 콘텐츠는 대상 리소스의 표현의 하나 이상의 부분입니다.
- 응답에 Content-Location 헤더 필드가 있고 그 필드 값이 대상 URI와 동일한 URI에 대한 참조이면, 콘텐츠는 대상 리소스의 표현입니다.
- 응답에 Content-Location 헤더 필드가 있고 그 필드 값이 대상 URI와 다른 URI에 대한 참조이면, 송신자는 콘텐츠가 Content-Location 필드 값으로 식별된 리소스의 표현임을 주장합니다. 다만 그러한 주장은 이 명세서에서 정의하지 않는 다른 수단으로 검증되지 않는 한 신뢰할 수 없습니다.
- 그렇지 않으면 콘텐츠는 HTTP에 의해 식별되지 않지만, 더 구체적인 식별자가 콘텐츠 자체 내에 제공될 수 있습니다.
5.6.5. 코멘트
코멘트는 코멘트 텍스트를 괄호로 둘러싸서 일부 HTTP 필드에 포함될 수 있습니다. 코멘트는 필드 값 정의에 "comment"가 해당 필드 값의 일부로 포함된 필드에서만 허용됩니다.