300 Multiple Choices는 요청한 리소스에 가능한 표현(representation)이 여러 개 있어, 클라이언트나 사용자가 그중 하나를 선택해야 함을 나타냅니다. 서버가 콘텐츠 협상만으로는 자동으로 하나를 고르지 못할 때 후보 목록을 제시합니다.
예컨대 같은 문서의 여러 언어판·형식(HTML/PDF)·해상도가 존재할 때, 서버가 선택지를 본문이나 Link 헤더로 나열하고 사용자가 고르도록 합니다.
GET /manual HTTP/1.1
Host: docs.example.com
Accept: text/htmlHTTP/1.1 300 Multiple Choices
Content-Type: text/html
Link: </manual.en.html>; rel=alternate; hreflang=en
Link: </manual.ko.html>; rel=alternate; hreflang=ko
<ul><li><a href="/manual.en.html">English</a></li><li><a href="/manual.ko.html">한국어</a></li></ul>app.get('/manual', (req, res) => {
res.status(300).json({
choices: ['/manual.en.html', '/manual.ko.html']
});
});