<aside>
💡 하나의 URL이 여러 리소스에 대응할 경우 어느 콘텐츠를 내보낼까에 대해 내용 협상 (content-nagotiation)을 제공한다.
</aside>
Contents
1. 내용 협상 기법
- 어떤 것이; 클라이언트에게 맞는지 판단하는 세 가지 다른 방법이 있다.
- 클라이언트 주도
- 클라이언트에게 선택지를 주고 선택하게 한다.
- 장점: 서버 입장에서 구현이 용이.
- 단점: 대기 시간 증가. 두번의 요청이 필요하기 때문.
- 서버 주도
- 클라이언트의 요청헤더를 검증해서 결정.
- 장점: 협상이 빠르다.
- 단점: 헤더에 맞는것이 없으면 서버는 추측을 해야한다.
- 투명
- 투명한 중간 장치(주로 프락시)가 대신해서 협상.
- 장점: 클라이언트 주도 보다는 빠르다.
- 단점: 어떻게 해야하는지에 대한 정형화된 명세 없음.
2. 클라이언트 주도 협상
가장 구현이 쉽다.
각 페이지에 두 번의 요청이 필요하다.
한번은 목록을 얻고, 두 번째는 선택한 사본을 얻는다.
- 서버가 클라이언트에게 선택지를 표현하는 2가지 방법
- 여러 가지 버전에 대한 링크와 각각의 설명이 담긴 HTML 페이지를 돌려줌.
- 300 Multiple Choicies 응답 코드로 돌려줌.
3. 서버 주도 협상
서버 주도 협상을 위해선 클라이언트가 반드시 자신이 무엇을 선호하는지에 대한 충분한 정보를 서버에게 주어야 한다.