Какой соответствующий код состояния HTTP необходимо вернуть службой REST API для просроченной сущности?

Допустим, у нас есть интернет-магазин и мы получили действительный запрос на обновление какого-либо заказа.

Запрос действителен сам по себе, но допустим, что срок действия ордера истек и срок его действия уже истек, поэтому этот запрос фактически не обрабатывается.

Я сомневаюсь, является ли это своего рода ошибкой проверки или нет. Потому что, как я уже говорил выше, сам запрос действителен; и отправитель запроса может не знать, что срок действия заказа уже истек.

Какой соответствующий код состояния HTTP необходимо вернуть службе REST API для такой ситуации?

Предупреждение: из-за общих требований к продукту, он должен быть одним из 4XX коды ошибок!

UPD: Больше информации: этот предполагаемый "порядок" все еще существует, даже срок его действия истек. Его можно получить, но больше невозможно управлять им. Вот почему код 404 (например) не подходит.

3 ответа

Моя собственная версия:

Я думаю, что для такой ситуации 410 Код статуса наиболее подходящий:

Ответ 410 в первую очередь предназначен для помощи веб-задачам
обслуживание путем уведомления получателя о том, что ресурс
намеренно недоступен и что владельцы серверов желают, чтобы
удаленные ссылки на этот ресурс будут удалены. Такое событие встречается часто
для ограниченного времени, рекламных услуг и для ресурсов, принадлежащих лицам, которые больше не связаны с сайтом сервера происхождения. Это
нет необходимости отмечать все постоянно недоступные ресурсы как
"ушел" или сохранить отметку в течение любого промежутка времени - это остается
на усмотрение владельца сервера.

https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html:

Запрашиваемый ресурс больше не доступен на сервере, а адрес пересылки неизвестен. Ожидается, что это условие будет считаться постоянным. Клиенты с возможностями редактирования ссылок ДОЛЖНЫ удалять ссылки на Request-URI после одобрения пользователя. Если сервер не знает или не имеет возможности определить, является ли условие постоянным, СЛЕДУЕТ использовать код состояния 404 (не найден). Этот ответ кэшируется, если не указано иное

Использование 410 Gone,

Целевой ресурс больше не доступен на исходном сервере, и это условие, вероятно, будет постоянным.

Я скажу это 400 подходит лучше, чем 410.

ИМО 410 (Gone)не подходит, потому что ресурс не пропал. Он все еще там, просто как финал (в данном случаеexpired) государство.

400означает BadRequest. Согласно моей интерпретации, пытаясьUPDATE что-то, что не обновляется (пытается обновить expired пункт) является BadRequest.

Я полагаю, что 400 не только для плохо отформатированных запросов, но и для запросов, которые не соответствуют внутренней проверке бизнес-логики (в данном случае, не обновляя expired элемент, это внутренняя бизнес-логика).

Я бы выбрал один из них: 400 - Плохой запрос 410 - Ушел

от: https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

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