content-type 이란 해당 요청(Request)이 보내는 메시지 body의 타입을 명시하는 정보로,
간단히 말해 보내는 자원의 형식을 명시하기 위해 헤더에 실리는 정보입니다. 이 값은 표준 mine-type 중의 하나입니다.
Content-Type : multipart/form-data
파일 첨부
파일 업로드를 구현할 때 클라이언트가 web 브라우저라면 form을 통해서 파일을 전송합니다.
웹 브라우저가 보내는 HTTP 메시지는 Content-Type 속성이 multipart/form-data
로 지정되고 정해진 형식에 따라 메시지를 인코딩하여 전송합니다.
참고로 multipart는 MIME(Multipurpose Internet Mail Extensions)타입 중 하나입니다.
본론으로, multipart/form-data를 처리하기 위한 서버는 멀티파트 메시지에 대해서 각 파트별로 분리하여 개별 파일의 정보를 얻게 됩니다.
여기서 중요한 점은 이미지 파일을 전송한다고 해서 png나 jpg 파일을 전송하는 것이 아니라는 것입니다.
이미지 파일도 문자로 이루어져 있기 때문에 이미지 파일을 문자로 생성하여 HTTP Request Body 에 담아 서버로 전송하는 것입니다.
Content-Type : application/javascript
Defined in RFC 4329.
Content-Type : application/json
RestFul API를 사용하게 되며 request를 날릴 때 대부분 json을 많이 사용하게 됨에 따라 자연스럽게 사용이 많이 늘게 되었습니다.
JavaScript Object Notation JSON.
Defined in RFC 4627.
Content-Type : application/x-www-form-urlencoded
HTML의 form 의 기본 Content-Type으로 요즘은 자주 사용하지 않지만 여전히 사용하는 경우가 종종 존재합니다.
<aside>
💡 application/json 과 application/x-www-form-urlencoded 차이
application/json은 {key: value}
형태로 전송되지만
application/x-www-form-urlencoded는 key=value&key=value
의 형태로 전달됩니다.
</aside>
Content-Type : application/msword
doc
Content-Type : application/pdf
Content-Type : application/vnd.ms-excel
xls
Content-Type : application/x-javascript
js
Content-Type : application/zip
zip