이번 포스팅에서는 HTML 통신에서 사용되는 Content-Type 헤더와 Media Type, 종류 등에 대해 알아볼 예정이다.
application/json
, text/html
과 같은 Content-Type 헤더는 리소스의 Media Type을 나타낸다.
Media Type은 과거 MIME( Multipurpose Internet Mail Extentions ) Type으로 불렸다.
해당 헤더는 미디어 유형(type)과 하위 유형(subtype), 그리고 보조 정보를 제공함으로써 MIME Entity 본문의 데이터 특성을 명시하는 용도로 사용된다.
media-type =
type "/" subtype *( OWS ";" OWS parameter )
type/subtype
뒤에는name=value
쌍 형태의 파라미터 값이 올 수있다.
*( OWS ";" OWS parameter )
에서*
는 여러개 ,OWS
는 선택적 공백을 의미한다
즉, 공백이후;
가 온 다음 공백이후 파라미터가 올 수 있다는 의미다
최상위 미디어 유형에 해당하는 type은 데이터의 유형을 선언하는데 사용되며,
하위 미디어 유형에 해당하는 subtype은 해당 유형 데이터의 표현방식을 나타낸다.
예를들어,
text/html
의 경우
html 형식으로 표현된 문자열이 body에 담겨있음을 의미한다.
subtype 표현방식을 모르더라도 type 만을 이용해 데이터의 유형을 정확히 파악할 수 있다. 즉, subtype의 표현방식을 모른다면 type 유형의 원시데이터를 사용자에게 노출할 수 있다.
하지만, 이미지나 오디오 유형에서 원시데이터가 노출되는 것은 부적절하기 때문에
복합적인 형식은 multipart
나 application
을 유형을 사용해야한다.
Media Type의 type
에 오는 유형들을 의미하며, 5가지의 개별유형과 2가지의 복합유형으로 구분된다.
개별 유형
1.text
subtype으로plain
이 오는경우, 문자열 원문을 그대로 표시하라는 의미를 지닌다.
subtype 표현에 특정한 소프트웨어가 필요해서는 안된다
2.image
정보 확인을 위해 모니터, 프린터같은 디스플레이 장치가 필요하다.
subtype으로는 주로jpeg
나gif
가 사용된다
3.audio
음성 출력장치가 필요하며, 일반적으로 사용되는 subtype은basic
이다.
4.video
움직이는 이미지를 표현할 수 있는 기능이 필요하며, 일반적으로 사용되는 subtype은mpeg
다.
5.application
일반적으로 해석되지 않은 바이너리 정보나 애플리케이션에서 처리할 정보의 경우 사용된다.
HTML Form에서 POST를 이용한 요청의 기본 content-type 값으로application/x-www-form-urlencode
가 사용된다.
REST API에선 주로application/json
이 사용된다
복합 유형
1.multipart
여러 개의 독립적인 데이터 유형 엔티티로 구성된 데이터에 사용된다.
mixed
,alternative
,parallel
,digest
4개의 subtype이 기본적으로 사용된다.
HTML Form 데이터에서 파일을 포함한 복합적인 데이터 전송에multipart/form-data
이 사용되기도 한다.
2.message
캡슐화된 메시지 데이터에 사용된다.