Мы разрабатываем стандартную службу REST с использованием кодов состояния HTTP в качестве кода ответа, если что-то пошло не так. (например, неверный ввод пользователя возвратит клиенту "400 Bad Request" )
Однако мы чувствовали, что более подробное сообщение об ошибке будет полезно для клиента. (например, неверная входная ошибка связана с тем, что X является непризнанным именем параметра)
Мы хотели бы быть как можно более точными для спецификаций HTTP, поэтому, изучив спецификацию в RFC2616, мы думаем о том, чтобы поместить подробную ошибку в заголовках HTTP, в частности в поле предупреждения заголовка HTTP. Он сказал в RFC, что:
Поле общего заголовка Warning используется для переноса дополнительной информации о статусе или преобразовании сообщения, которое может не отображаться в сообщении. Эта информация обычно используется для предупреждения о возможном отсутствии семантической прозрачности из операций кеширования или преобразований, применяемых к телу сообщения сообщения.
Кажется, нет ограничений на использование этого заголовка для других предупреждений (например, сообщение об ошибке REST), даже те, которые не связаны с предупреждениями о кеше в соответствии с первоначальным намерением этого заголовка. Нам нравится семантика, и мы планировали использовать код предупреждения 299, который, по-видимому, подходит для счета довольно хорошо:
299 Прочее постоянное предупреждение. Текст предупреждения МОЖЕТ включать произвольную информацию , которая должна быть представлена пользователю пользователя или зарегистрирована. Система, получающая это предупреждение, НЕ ДОЛЖНА предпринимать какие-либо автоматические действия.
Итак, учитывая неверный ввод ошибки, представленный в верхней части этого вопроса, мы думаем о том, чтобы поместить наше сообщение об ошибке REST, как в следующем примере:
HTTP/1.1 400 Bad Request
Warning: 299 ServiceName "Invalid input error: X is unrecognized parameter name."
Это хорошая идея/практика? Мы также обнаружили, что некоторые службы подробно описывают это сообщение в заголовке X-Warning, но это кажется не стандартным. Мы задаемся вопросом, что подумает об этом. Есть ли также более эффективная/стандартизованная практика для передачи подробных сообщений об ошибках в ответах REST?