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