728x90
이 글은 공부를 하면서 알게 된 내용들을 기록하는 글 입니다. 오류나 고쳐야 할 사항들이 있다면 지적 부탁드립니다!
⛅️ 콘텐츠 협상
콘텐츠 협상 Content-Negotiation이란 클라이언트 측에서 선호하는 표현을 요청하는 것을 말한다.
헤더에 클라이언트가 선호하는 표현(옵션)을 명시하여 서버 측에 전송했을 때,
서버 측에서 해당 헤더의 내용을 보고 가능한 옵션이라면 해당 표현으로 응답 메세지를 전송한다.
만일 클라이언트가 한국어(ko)를 선호한다면 헤더에 해당 내용을 명시하여 한국어 제공을 요청할 수 있다.
q(Quality value)를 통해 우선 순위를 정할 수 있기 때문에, 1순위 옵션을 제공받을 수 없다면 그 다음 우선순위에 해당하는 옵션을 요청할수 있다.
⛅️ Content-Negotiation 종류
✅ Accept
- 클라이언트가 선호하는 미디어 타입 전달 ex) Accpet: applicacon/json
- Content-Type과 Accept의 차이점
- Content-Type은 message에 담긴 데이터가 어떤 미디어 타입인지 알려주는 것이고, Accept는 클라이언트가 어떤 종류의 미디어 타입을 선호하는지 알려주는 것이다. (Accept는 강제성이 없다.)
✅ Accept-Charset
- 클라이언트가 선호하는 charecter set이 무엇인지 전달 ex) Accept-Charset: utf-8
✅ Accept-Encoding
- 클라이언트가 선호하는 압축 인코딩이 무엇인지 전달 ex) Accept-Encoding: gzip
✅ Accept-Language
- 클라이언트가 선호하는 자연 언어가 무엇인지 전달 ex) Accept-Language: ko
⛅️ 협상과 우선순위 Quality Values(q)
✅ Quality Values(q) 값이 1에 가까울수록 우선순위가 높다.
- q의 값은 0~1까지 설정이 가능하며, 클 수록 높은 우선순위를 갖는다.
- q를 생략하면 1로 설정된다.
- ex) Accept-Language: ko-KR, ko;q=0.9,en-US;q=0.8,en;q=0.7
- 1순위: ko-KR
- 2순위: ko;q=0.9
- 3순위: en-US;q=0.8
- 4순위: en;q=0.7
✅ 구체적인 것이 우선순위가 높다.
- 더 구체적인 옵션의 우선순위가 더 높다.
- Accept: text/*, text/plain, text/plain;format=flowed, */*
- 1순위: text/plain;format=flowed
- 2순위: text/plain
- 3순위: text/*
- 4순위: */*
728x90