Я створюю RESTful API, який буде обробляти ряд взаємодій користувачів, включаючи розміщення замовлень за допомогою збережених кредитних карток.
У разі успішного замовлення я повертаю 200 ОК, а у випадку, коли запит замовлення неправильний або недійсний, я повертаю 400 Поганий запит. Але що я повинен повернути, якщо виникає проблема під час фактичної обробки замовлення?
- Клієнтське замовлення POSTS на сервер для користувацького ресурсу. Якщо користувача не існує, повертається 404 Not Found.
- Формат замовлення та інформація підтверджена. Якщо недійсна, повертається 400 поганих запитів.
- Замовлення обробляється. Якщо замовлення успішно, для замовлення повертається 201 Created. Якщо трапляється несподівана помилка, повертається помилка 500 сервера.
Останній крок - проблема - що я повертаю, якщо замовлення не завершиться з будь-якої іншої причини? Можливі сценарії можуть включати:
- Товар розпроданий
- Досягнуто максимальний ліміт замовлень користувача
- Помилка трансакції кредитної картки (недостатня кількість коштів тощо)
Це не здається, що було б доречним або для 400, або для 500. Якщо що-небудь, я міг би розглянути його як 400, якщо немає кращого коду - запит був недійсним згідно з діловими правилами. Це не здається точним.
Редагувати: Також знайшлося це обговорення цієї теми. Всі відповіді там, схоже, вказують на використання кодів статусу для цього типу порушень, з деякою дискусією між використанням 400, 409 або розширення 422.