406 возвращается сервером, когда он не может ответить на основе принятия заголовков запроса (т. е. у них есть заголовок Accept, в котором говорится, что им только нужен XML).
415 возвращается сервером, когда объект, отправленный в запросе (контент в POST или PUT), имеет неподдерживаемый медиатип (т. е. они отправили XML).
Итак.. 406, когда вы не можете отправить то, что они хотят, 415, когда они отправляют то, что вам не нужно.
Надеюсь, это поможет!
Ответ 2 · рейтинг 45 · Wrikken
406, если был отправлен заголовок Accept, вы не можете его заполнить.
415, если отправлено Content-Type, вы не можете его использовать.
Ресурс, идентифицированный запросом, способен генерировать только объекты ответа, характеристики контента которых неприемлемы в соответствии с заголовками принятия, отправленными в запросе.
Когда клиент запрашивает вашу службу, проверьте, какие Accept* заголовки он отправил; если он не соответствует application/json (или подстановочному знаку, например */*), верните это. В ответе должно быть указано "здесь мы обслуживаем только JSON".
415 Неподдерживаемый тип носителя
Сервер отказывается обслуживать запрос, поскольку объект запроса имеет формат, не поддерживаемый запрошенным ресурсом для запрошенного метода.
Просто возврат 415 Unsupported Media Type должен быть минимальным ответом на "клиент отправил что-то, что не JSON, не может с этим работать"; не уверен, есть ли заголовок, указывающий "вам нужно отправить JSON"
Ответ 4 · рейтинг 4 · Victor Welling
406 используется, когда клиент запрашивает ответ в неподдерживаемом типе контента (в вашем случае, любом, кроме JSON), используя заголовок Accept. 415, с другой стороны, используется, когда клиент отправляет данные POST или PUT в неподдерживаемый тип контента.
В двух словах: используйте 406, если вы не можете вывести в ожидаемом формате, и используйте 415, если вы не поддерживаете входной формат.
Я бы выбрал 415, он вполне подходит под ваше описание.
Редактировать: О. IC. "сущность запроса имеет формат, не поддерживаемый запрошенным ресурсом". Поэтому, если у вас есть запрос с контентом, и этот контент имеет неправильный тип, вы должны выдать 415 -response.