Я создаю RESTful API, который будет обрабатывать ряд взаимодействий с пользователем, включая размещение заказов с использованием сохраненных кредитных карт.
В случае успешного заказа я возвращаю 200 OK, а в случае, если запрос заказа неправильный или недействительный, я возвращаю 400 Bad Request. Но что мне вернуть, если возникла проблема во время фактического оформления заказа?
- Заказ POSTS клиента на сервер для пользовательского ресурса. Если пользователь не существует, возвращается 404 Not Found.
- Формат заказа и информация проверены. Если неверно, возвращается 400 Bad Request.
- Заказ обработан. Если заказ успешен, для заказа возвращается 201 Created. Если обнаружена непредвиденная ошибка, возвращается ошибка сервера 500.
Последний шаг - проблема - что мне вернуть, если заказ не выполнен по какой-либо другой причине? Возможные сценарии могут включать:
- Товар распродан
- Достигнут максимальный лимит заказа пользователя
- Сбой транзакции по кредитной карте (недостаточно средств и т. Д.)
Это не кажется подходящим ни для 400, ни для 500. Во всяком случае, я мог бы видеть это как 400, если нет лучшего кода - запрос был недействительным в соответствии с бизнес-правилами. Это просто не кажется точным.
Изменить: также нашел это существующее обсуждение той же темы. Все ответы там, похоже, указывают на использование кодов состояния для этого типа нарушения, с некоторыми обсуждениями использования расширения 400, 409 или 422.