Day 40 · 5/5
🌿 중급 백엔드

Content-Type이 뭔가요?

쉽게 이해하기

우편물 봉투에 '서류 재질 주의', '액체 포함' 같은 표시를 하듯이, HTTP 메시지에도 '이 데이터는 JSON입니다', '이건 이미지입니다'라고 알려줘야 받는 쪽이 제대로 처리할 수 있어요.

핵심 정리

HTTP 요청이나 응답의 본문이 어떤 형식인지 알려주는 헤더예요.

자세히 알아보기

Content-Type은 HTTP 헤더 중 하나로, 메시지 본문의 데이터 형식을 명시해요. 예를 들어 'Content-Type: application/json'이라고 쓰면 서버에게 '이 요청 바디는 JSON 형식이니까 그렇게 파싱해줘'라고 알려주는 거죠. 받는 쪽은 이 정보를 보고 어떻게 데이터를 읽을지 결정합니다. 가장 흔한 타입은 'application/json'이에요. 최근 웹 API는 거의 다 JSON으로 데이터를 주고받으니까요. 폼 데이터를 보낼 땐 'application/x-www-form-urlencoded'나 'multipart/form-data'를 써요. 특히 파일 업로드할 때는 multipart가 필수죠. 이미지는 'image/png', HTML은 'text/html', 일반 텍스트는 'text/plain'을 사용해요. 잘못된 Content-Type을 보내면 오류가 나요. JSON 데이터를 보내면서 'Content-Type: text/plain'이라고 하면 서버가 그냥 문자열로 읽어버려서 파싱이 안 되죠. 반대로 서버가 이미지를 보냈는데 'Content-Type: text/html'이라고 하면 브라우저가 엉뚱하게 텍스트로 표시하려다 깨져요. 실무에서는 axios나 fetch 같은 라이브러리가 자동으로 Content-Type을 설정해줘요. 하지만 API 테스트 도구(Postman, curl)를 쓰거나 직접 요청을 만들 땐 명시해줘야 해요. 또한 REST API를 설계할 때 응답의 Content-Type을 일관되게 유지하는 게 중요해요. 같은 엔드포인트가 때론 JSON, 때론 XML을 보내면 클라이언트가 혼란스러우니까요.