RestAPI 설계서 작성중...MIME 에 대하여 궁금해져 문서를 읽었으나 적용을 하지 못했다. 차후 예시 찾아보고 수정할 것!
자주 봐서 익숙해지자!
정의
클라이언트에게 전송된 문서의 다양성을 알려주기 위한 메커니즘
브라우저들은 리소스를 내려받았을 때 해야 할 기본 동작이 무엇인지를 결정하기 위해 대게 MIME 타입을 사용합니다.
RFC 6838
https://datatracker.ietf.org/doc/html/rfc6838
구조
type/subtype
type은 카테고리를 나타내며 개별(discrete) 혹은 멀티파트 타입이 될 수 있습니다.
subtype은 각각의 타입에 한정됩니다.
개별 타입
text/plain
text/html
image/jpeg
image/png
audio/mpeg
audio/ogg
audio/*
video/mp4
application/octet-stream
타입 | 설명 | 서브타입 예시 |
text | 텍스트를 포함하는 모든 문서를 나타내며 이론상으로는 인간이 읽을 수 있어야 합니다. | text/plain, text/html, text/css, text/javascript |
image | 모든 종류의 이미지를 나타냅니다. (animated gif처럼) 애니메이션되는 이미지가 이미지 타입에 포함되긴 하지만, 비디오는 포함되지 않습니다. | image/gif, image/png, image/jpeg, image/bmp, image/webp |
audio | 모든 종류의 오디오 파일들을 나타냅니다. | audio/midi, audio/mpeg, audio/webm, audio/ogg, audio/wav |
video | 모든 종류의 비디오 파일들을 나타냅니다. | vidio/webm, video/ogg |
application | 모든 종류의 이진 데이터를 나타냅니다. | application/octet-stream, application/pkcs12, application/vnd.mspowerpoint, application/xthml+xml, application/xml, application/pdf |
특정 서브타입이 없는 텍스트 문서들에 대해서는 text/plain가 사용되어야 합니다.
특정 혹은 알려진 서브타입이 없는 이진 문서에 대해서는 유사하게, application/octet-stream이 사용되어야 합니다.
application/octet-stream
이진 파일을 위한 기본값입니다.(8비트 단위 binary data)
브라우저는 보통 자동으로 실행하지 않거나 실행해야 할지 묻기도 합니다.
Content-Disposition 헤더가 값 attachment와 함께 설정되었고 'Save As' 파일을 제안하는지 여부에 따라 브라우저가 그것을 다루게 됩니다.
text/plain
문서로된 파일의 기본값입니다.
"알려지지 않은 텍스트 파일" 일지라도 브라우저는 전시(display)할 수 있다고 가정합니다.
text/css
웹 페이지 내에서 인터프리트되어야 하는 모든 CSS 파일은 text/css 파일이 되어야 합니다.
대개 서버들은 .css 접미사를 가진 파일들을 CSS 파일이라고 인식하지 못해 text/plain 혹은 application/octet-stream MIME 타입으로 전송합니다.
올바른 타입으로 CSS 파일을 서브하는데 특별한 주의가 필요합니다.
text/html
모든 HTML 컨텐츠는 이 타입과 함께 서브되어야 합니다.
application/xml + html 와 같은 XHTML을 위한 대체 MIME 타입들은 현재에는 대부분 쓸모가 없습니다.
멀티파트 타입
multipart/form-data
multipart/byteranges
멀티파트 타입은 일반적으로 다름 MIME 타입들을 지닌 개별적인 파트들로 나누어지는 문서의 카테고리를 가리킵니다.
이 타입은 합성된 문서를 나타내는 방법입니다.
출처 : https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types
'Network' 카테고리의 다른 글
웹소켓(Web Socket)이란? (3) | 2024.10.21 |
---|---|
[Network] SMTP (1) | 2022.12.07 |
[인프런] HTTP 웹 기본 지식 (1) | 2022.12.07 |
REST(Representational State Transfer) API (0) | 2022.09.18 |