HTTP 406 и 415 кодов ошибок

Я пишу веб-сервис, который принимает только json, и также выводы только json.

Таким образом, я должен возвратить соответствующий код состояния, если какой-либо другой формат требуют.

Кажется, что у меня есть два варианта:

  1. 406 - Не приемлемый
  2. 415 - Неподдерживаемый тип среды

Было бы замечательно, если кто-то мог бы просветить меня относительно семантики двух кодов.

64
задан Francois Bourgeois 6 December 2013 в 13:57
поделиться

5 ответов

406 возвращается сервером, когда он не может ответить, основываясь на принятии заголовков запроса (т.е. у них есть заголовок Accept, в котором говорится, что они только хотят XML).

415 возвращается сервером, когда объект, отправленный в запросе (содержимое в POST или PUT), имеет неподдерживаемый медиатип (т.е. они отправили XML).

т.е. 406, когда вы не можете отправить то, что они хотят, 415, когда они отправляют то, что вы не хотите.

Надеюсь, это поможет!

127
ответ дан 24 November 2019 в 15:42
поделиться
  • 406 если был отправлен заголовок Accept, который вы не можете выполнить.
  • 415 если был отправлен Content-Type вы не можете использовать.
39
ответ дан 24 November 2019 в 15:42
поделиться

Процитировать RFC2616 :

406 Not Acceptable

Ресурс, указанный в запросе способен только генерировать ответ сущности, у которых есть контент характеристики не приемлемы в соответствии с отправленными заголовками accept в запросе.

Когда клиент запрашивает вашу службу, проверьте, какие заголовки Accept * он отправил; если он не соответствует application / json (или подстановочный знак, например, * / * ), верните это. В ответе должно быть указано «здесь обслуживается только JSON».

415 Unsupported Media Type

Сервер отказывается обслуживать запрос, потому что сущность запрос находится в неподдерживаемом формате по запрошенному ресурсу для запрошенный метод.

Просто возвращение 415 Неподдерживаемый тип носителя должно быть минимальным ответом на запрос «клиент отправил что-то, кроме JSON, не может работать с этим»; не уверен, что есть заголовок, указывающий на то, что «вам нужно отправить JSON»

7
ответ дан 24 November 2019 в 15:42
поделиться

406 используется, когда клиент запрашивает ответ с неподдерживаемым типом контента (в вашем случае, любым другим, кроме JSON) с использованием заголовка Accept. 415, с другой стороны, используется, когда клиент отправляет или отправляет данные в неподдерживаемом типе содержимого.

Вкратце: используйте 406, если не можете вывести в ожидаемом формате, и используйте 415, если вы не поддерживаете входной формат.

См. Их определения в RFC 2616: 406 и 415

4
ответ дан 24 November 2019 в 15:42
поделиться

RFC2616 вам поможет!

http://www.rfc2616.com/#10.4.7

http://www.rfc2616.com/#10.4.16

Я бы выбрал 415, он вполне соответствует вашему описанию .

Редактировать: О. IC. «объект запроса имеет формат, не поддерживаемый запрошенным ресурсом». Поэтому, если у вас есть запрос с контентом и этот контент имеет неправильный тип, вы должны отправить 415 -response.

-2
ответ дан 24 November 2019 в 15:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: