HTTP Request, Content-Type 이란?
Content-Type 이란?
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Content-Type
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 |
---|