협상 (콘텐츠 네고시에이션)
클라이언트가 선호하는 표현 요청
협상 헤더는 요청시에만 사용
- Accept : 클라이언트가 선호하는 미디어 타입 전달 (html, json..)
- Accept-Charset : 클라이언트가 선호하는 문자 인코딩
- Accept-Encoding : 클라이언트가 선호하는 압축 인코딩
- Accept-Language : 클라이언트가 선호하는 자연 언어
Accept-Language
적용 전
Accept-Language
적용 후
요청한 언어로 응답
🔎 복잡한 상황에서는?
요청한 언어가 없는 경우
협상 우선순위
1)
GET /event
Accept-Language: ko-KR,ko;q=0.9,en-US'q=0.8,en;q=0.7
- Quality Values(q) 값 사용
- 0~1 , 클수록 우선순위 높음
- 생략하면 1
- Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
- ko-KR;q=1 (q생략)
- ko;q=0.9
- en-US;q=0.8
- en;q=0.7
결과
2)
GET /event
Accept: text/*, text/plain, text/plain;format=flowed. */*
-
구체적인 것이 우선
- text/plain;format=flowed
- text/plain
- text/*
*/*
3)
- 구체적인 것을 기준으로 미디어 타입을 맞춤
- Accept: text;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, /;q=0.5
text/plain의 경우 매칭되는 것이 없이 때문에 text;q=0.3으로 매칭