Каков соответствующий ответ кода состояния HTTP для общего неудачного запроса (не ошибка)?

Я создаю RESTful API, который будет обрабатывать ряд пользовательских взаимодействий, включая размещение заказов с использованием сохраненных кредитных карт.

В случае успешного заказа я возвращаю 200 OK, а в случае, если запрос заказа неверен или недействителен, я возвращаю 400 Bad Request. Но что я должен вернуть, если возникла проблема при фактической обработке заказа?

Клиент размещает заказ на сервере для пользовательского ресурса. Если пользователь не существует, возвращается 404 Not Found.Формат заказа и информация подтверждена. Если недействительный, возвращается 400 Bad Request.Заказ обработан. Если заказ выполнен успешно, для заказа возвращается 201 Created. Если обнаружена непредвиденная ошибка, возвращается 500 Ошибка сервера.

Последний шаг - это проблема - что мне вернуть, если заказ не выполнен по какой-либо другой причине? Возможные сценарии могут включать:

Товар распроданДостигнут максимальный лимит пользователяОшибка транзакции по кредитной карте (недостаточно средств и т. Д.)

Похоже, что это не подходит для 400 или 500. Во всяком случае, я мог бы видеть это как 400, если нет лучшего кода - запрос был недействительным в соответствии с бизнес-правилами. Это просто не кажется точным.

Изменить: Также найденоэто существующее обсуждение той же темы. Кажется, что все ответы там указывают на использование кодов состояния для этого типа нарушения, с некоторым обсуждением между использованием 400, 409 или расширения 422.

Ответы на вопрос(7)

Ваш ответ на вопрос