406 Not Acceptable은 서버가 요청의 Accept 계열 헤더가 요구하는 형식으로 응답을 만들 수 없을 때 반환됩니다. 즉 콘텐츠 협상(content negotiation)이 실패한 상황입니다.
예컨대 클라이언트가 Accept: application/xml만 허용했는데 서버는 JSON만 제공할 수 있다면, 어떤 표현도 조건을 만족하지 못해 406으로 응답합니다.
GET /api/report HTTP/1.1
Host: api.example.com
Accept: application/xmlHTTP/1.1 406 Not Acceptable
Content-Type: application/json
{"error":"not_acceptable","supported":["application/json"]}app.get('/api/report', (req, res) => {
if (!req.accepts('json'))
return res.status(406).json({ supported: ['application/json'] });
res.json(report);
});