Что является подходящим Ответ кода состояния HTTP на общий неудачный запрос (не ошибка)?

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

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

  1. Клиент ОТПРАВЛЯЕТ заказ на сервер для пользовательского ресурса. Если пользователь не существует, возвращается 404 Not Found.
  2. Подтвержден формат заказа и информация. Если недействителен, возвращается 400 Bad Request.
  3. Заказ обработан. Если заказ успешен, для заказа возвращается 201 Created. Если обнаружена непредвиденная ошибка, возвращается ошибка сервера 500.

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

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

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

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

97
задан Community 23 May 2017 в 12:34
поделиться