Коды ошибок HTTP 406 и 415



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



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



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




  1. 406-Неприемлемо

  2. 415 - Неподдерживаемый Тип Медиа


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

640   5  

5 ответов:

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

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

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

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

  • 406 если Accept заголовок был отправлен вы не можете fullfill.
  • 415 если a Content-Type отправляется вы не можете использовать.

цитата адресу rfc2616:

406 Неприемлемо

ресурс, идентифицированный запросом способен только генерировать ответ сущности, которые имеют содержимое характеристики не приемлемы согласно примете заголовки отправлены в запросе.

когда клиент запрашивает ваш сервис, проверьте, что Accept* заголовки он послал; если он не соответствует application/json (или подстановочные знаки, например */*), вернуть это. Этот ответ должен указывать:"мы здесь обслуживаем только JSON".

415 Неподдерживаемый Тип Медиа

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

возвращается 415 Unsupported Media Type должен быть минимальный ответ для "клиент отправил что-то, что не JSON, не может работать с этим"; не уверен, что есть заголовок для указания "вам нужно отправить JSON"

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

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

смотрите RFC 2616 для их определения:406 и 415

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

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

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

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

Edit: Oh. ИНТЕГРАЛЬНАЯ СХЕМА. "сущность запрос в формате, не поддерживаемом запрошенным ресурсом". Так что если у вас есть запрос с контентом и этот контент имеет неверный тип, вы должны бросить 415 -ответ.

Comments

    Ничего не найдено.