기타

[HTTP] header - Content-Type, Accept

비번변경 2024. 11. 5. 01:16

개요

최근 API 개발 업무를 담당하고 있는데, API 정의서에 Content-Type, Accept라는 HTTP 헤더에 대한 내용이 기재되어 있었다. 두 헤더 모두 데이터 형식과 관련된 것으로 보이는데, 각각의 개념에 대해서 적어둔다.

 

 

Content-Type

HTTP 메시지 본문(Body)의 미디어 타입, 즉 전송된 데이터의 유형을 나타낸다.

Content-Type: text/html; charset=utf-8
Content-Type: application/json; charset=utf-8
Content-Type: multipart/form-data; boundary=something

HTTP 표준을 따르는 브라우저와 웹 서버는 Content-Type 헤더를 기준으로 HTTP 메시지 내 데이터를 해석한다.

참고로 GET 방식의 요청은 HTTP 요청 본문이 없기 때문에 Content-Type가 무의미하다.

 

 

Accept

클라이언트가 서버에 요청할 때, 클라이언트가 이해할 수 있는 콘텐츠 타입을 나타낸다. 즉, 요청한 클라이언트가 응답으로 받을 콘텐츠 타입을 의미한다.

서버는 Accept에 기재된 미디어 타입을 사용하여 응답하고, 응답의 Content-Type 헤더에 사용한 미디어 타입을 알린다.

// 단일 미디어 타입
Accept: <MIME_type>/<MIME_subtype>

// 특정 MIME_type의 모든 subtype
Accept: <MIME_type>/*

// 모든 미디어 타입
Accept: */*

// 여러 타입 나열
// ';q='는 가중치를 의미한다.
Accept: text/html, application/xhtml+xml, application/xml;q=0.9, */*;q=0.8

 

 

참고 문서

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

https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Accept

Contents-Type Header 와 Accept Header의 차이점

https://www.geeksforgeeks.org/http-headers-content-type/