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

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

Ваучер получен от третьей стороны.

Существуют некоторые условия, например, срок действия, который мы проверяем / подтверждаем.
Итак, если клиентское приложение запрашивает /voucher/1234 Ваучер с идентификатором 1234 получен от третьей стороны.

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

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

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

1 ответ

Решение

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

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

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

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

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

Другие вопросы по тегам