Content-Type 이란?

https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Content-Type

 

Content-Type - HTTP | MDN

Content-Type 개체 헤더는 리소스의 media type을 나타내기 위해 사용됩니다.

developer.mozilla.org

MDN 에서는 Content-Type을 다음과 같이 정의하고 있습니다.

 

응답 내에 있는 Content-Type 헤더는 클라이언트에게 
반환된 컨텐츠의 컨텐츠 유형이 실제로 무엇인지를 알려줍니다.

 

말이 조금 어려우니 정리를 해봅니다.

응답 헤더에 Content-Type을 포함할 수 있으며
이는 응답의 유형 (보통 Body의 데이터 유형)이 어떻게 되는지
클라이언트 (응답을 받을 시스템 or 사용자)에게 알려주는 것

여기서 클라이언트는 응답을 받는 주체로

페이스북에 API 요청을 날려서 유저의 게시글 데이터를 받아오는 상황으로 예를 들자면,

요청을 날릴 때에는 페이스북이 클라이언트가 되고

페이스북에서 게시글 정보를 보내줄 때에는 이 정보를 받는 주체가 클라이언트가 됩니다.

 

 

한편 웹에 대해 공부한다면 이에 대해서는 꼭 알아야할 정보입니다.

따라서 오늘은 해당 방식에 대해서 공부를 해보려고 합니다.

 

 Content-Type

일반적으로 Content-Type 의 유형으로 많이 사용하는 타입으로는 3가지가 있습니다.

"application/json", "application/x-www-form-urlencoded", "multipart/form-data"

 

 

application/json

이는 응답 데이터가 Json 일 때 사용합니다.

{ Name : 'John Smith', Age: 23}

이 데이터를 받는 서버 입장에서 위 글자는 단순 문자열일 뿐입니다.

따라서 이 문자열이 단순한 문자열이 아니라 json 데이터다!

라는 것을 알리기 위해서는 application/json 을 사용해야 합니다.

 

application/x-www-form-urlencoded
form 내부의 input 요소의 데이터를 &으로 분리하고, "=" 기호로 
값과 키를 연결하는 key-value tuple로 인코딩되는 값입니다. 
영어 알파벳이 아닌 문자들은 percent encoded 으로 인코딩됩니다

 

쉽게 풀어 설명하면 form 의 데이터를 전송할 때 input 의 값을 다음과 같은 형식으로 만들어 요청을 서버에 날립니다.

POST / HTTP / 1.1
host : localhost

// 여기
Name=Smith&Age=23

 "Name=Smith&Age=23" 형식으로 "key=value&key=value" 형태라는 것을 서버에 알립니다.

한편 브라우저에 의해서 인코딩 되어 보내집니다.

(대부분의 브라우저는 W3 규격을 충실하게 따르고 있기 때문에, 폼을 submit 할 때 body를 적절하게 encoding 해줍니다.)

 

HTML 폼을 만들어 데이터를 전송할 때 많이 사용 되었던 헤더 입니다.

그러나 요즘은 이 헤더의 사용이 예전에 비해 많이 줄었습니다

 

 

 

 

multipart/form-data

이는 보낸 응답 데이터에 파일이 첨부 될 수 있음을 알리는 것 입니다.

HTML 폼에선 enctype="multipart/form-data" 속성을 명시함으로써 사용할 수 있습니다.

위 속성을 명시하면 브라우저는 서버에 요청을 날릴 때 헤더의 Content-Type을 mulipart/form-data 으로 설정 합니다.

 

 

'개발' 카테고리의 다른 글

H2 Database Data export  (0) 2021.05.24