Считается ли хорошей практикой повторное использование кодов статуса RFC HTTP, как это, или мы должны создавать новые, которые точно соответствуют нашим конкретные причины ошибки?
Мы разрабатываем API веб-службы для нескольких устаревших приложений.
В дополнение к структурам данных JSON / XML в теле ответа мы стремимся возвращать коды состояния HTTP, которые имеют смысл для разработчиков веб-кешей и.
Но как подойти к сопоставлению различных классов ошибок с соответствующими кодами состояния HTTP? Все в команде согласны со следующим:
GET / package / 1234 возвращает 404 Not Found, если 1234 не существует.
GET / package / 1234 / next_checkpoint возвращает 400 неверный запрос, если next_checkpoint и 1234 допустимы для запроса, но next_checkpont здесь не имеет смысла. ..
и так далее ... но в некоторых случаях требуется более конкретная информация, чем просто 400 - например:
POST / dispatch /? for_package = 1234 возвращает 412 Precondition Failed, если существуют / dispatch и package 1234, НО 1234 еще не готов к отправке.
(Изменить: коды состояния в HTTP / 1.1 и коды состояния в WebDAV ext.)