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