2016-11-04 4 views
0

Я хочу уведомить клиента о конкретном состоянии ошибки с использованием кода состояния HTTP.Можно ли повторно использовать коды состояния HTTP, такие как 416?

Ближайшее, что я могу найти, это «416 Range Not Satisfiable» - хотя служба не имеет ничего общего с обслуживанием байтов от файлов.

Могу ли я свободно толковать значение «Range Not Satisfiable» или я должен уважать техническое определение, включающее байтовые диапазоны файлов?

+0

Лучше использовать общий код состояния «Простой запрос» и включать данные в тело ответа (или строку сообщения об ошибке). – Thilo

ответ

1

Вы можете либерально толковать это. Однако это не значит, что это правильно.

Ошибки, которые специально не обрабатываются текущим 4xx, обычно используют более общую ошибку 400 вместе с дополнительным объяснением причин. Общее правило состоит в том, что если ваша ошибка является точным соответствием более конкретному коду, используйте ее, иначе используйте менее конкретный код.

Перегрузка значения конкретных кодов, вероятно, приведет к массовому путанице.

Согласно RFC7231, section 6.5 (курсив мой):

4xx (Client Error) класс кода статуса указывает на то, что клиент, возможно, допустил ошибку. За исключением случаев ответа на запрос HEAD, сервер ДОЛЖЕН отправить сообщение с пояснением об ошибке, и является ли это временным или постоянным условием. Эти коды состояния применимы к любому методу запроса. Пользовательские агенты ДОЛЖНЫ отображать любое включенное представление пользователю.

+0

Проблема заключается в том, что у вас есть серия прокси, шлюзы api и т. Д. Многие могут/будут возвращать 400 кодов с различными представлениями по другим причинам. Я хотел бы использовать код состояния, который можно однозначно предполагать из моей службы для заданного URL-адреса, чтобы клиент мог интерпретировать ответ. – aaa90210

+1

@ aaa90210, тогда я предлагаю вам присоединиться к IETF и убедить их добавить «499 конкретный код для aaa90210, чтобы свести к минимуму их код состояния кодирования» :-) Все остальное будет нарушать стандарты, как это делали многие другие клоуны (https://en.wikipedia.org/wiki/List_of_HTTP_status_codes). Вам должно быть просто вставлено * очень * конкретное сообщение в тело ответа, которое может быть легко интерпретировано кодом или пользователем (например, «ERR314159 - без разрешения на просмотр»). – paxdiablo

+0

Секундомер. Будьте в Интернете. См. RFC 7233. – VoiceOfUnreason