개요
최근 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