Подходит ли код состояния Http 412 для ошибки, основанной на правилах, определенных в нашем домене?

У меня есть конечная точка API, которая возвращает объект Voucher.

Ваучер получен от третьего лица.

Есть некоторые условия, например дата истечения срока действия, которые мы проверяем/подтверждаем.
Таким образом, если клиентское приложение запрашивает /voucher/1234 ваучера с идентификатором 1234, он извлекается из третьей стороны.

Если дата истечения срока действия ‹ сейчас, нам нужно вернуть ошибку.

Я хочу вернуть стандартные ошибки HTTP.

Какой из них будет наиболее подходящим?
Сначала я думал, что подойдет 412, но теперь не уверен.


person Alex    schedule 29.11.2013    source источник


Ответы (1)


HTTP 412 используется, когда сервер не соответствует одному из предварительных условий (If-Match, If-Modified-Since и т. д.), указанных в заголовке запроса.

Очень общий способ - вернуть HTTP 400 + конкретное сообщение об ошибке в недопустимых полях.

Однако все больше и больше популярных API-интерфейсов начинают использовать расширения HTTP для более детальной обратной связи с клиентом. Twitter и GitHub используют HTTP 422 Unprocessable Entity, как определено в HTTP-расширении WebDAV. HTTP 422 сообщает, что:

Код состояния 422 (Unprocessable Entity) означает, что сервер понимает тип содержимого объекта запроса (поэтому код состояния 415 (Unsupported Media Type) не подходит), а синтаксис объекта запроса правильный (таким образом, 400 (Bad Request). ) недопустимый код состояния), но не смог обработать содержащиеся в нем инструкции. Например, это состояние ошибки может возникнуть, если тело XML-запроса содержит корректные (т. е. синтаксически правильные), но семантически ошибочные XML-инструкции.

Ваш сервер понимает, что хочет сделать пользователь и понимает, что содержат данные, он просто не позволит вам этого сделать. Итак, Http 422 выглядит хорошо для вас.

person Faruk Sahin    schedule 29.11.2013