Я розробляю API REST для проекту, де користувачі завжди перебувають на одному з декількох "планів" - кожен план визначає деякі обмеження ресурсів, наприклад, максимальну кількість користувачів, яку може мати обліковий запис, або максимальну кількість даних, які вони можуть завантажувати. Після досягнення однієї з цих меж користувачі можуть оновити свої плани (по суті оплатити), щоб отримати більше ресурсів.
Я хочу повернути спеціальний код статусу, який вказує на ситуацію, коли дію неможливо виконати через обмеження ресурсів облікового запису, а оновлення плану вирішить це - наприклад, якщо користувач використовує 100% своєї ємності та спробує завантажити додатковий файл , вони отримають цю відповідь.
Кандидати, IMHO:
403 Forbidden
- однак, я хотів би розрізнити цей випадок та інші випадки, коли користувачеві просто не вистачає дозволу на виконання цієї дії.401 Unauthorized
- Не дуже гарна ідея, ми використовуємо це для проблем, пов’язаних з аутентифікацією.402 Payment Required
- має сенс, але я переживаю за використання нестандартного, але зарезервованого коду статусуЩось навіть менш стандартне, на кшталт того
423 Locked
, що навряд чи ми використаємо його для чогось іншого у майбутньому
Ще один варіант полягає в тому, щоб розробити щось дуже стандартне, наприклад, 403
але вказати специфіку помилки в тілі відповіді.
Мені цікаво, який підхід ви вважаєте, що (а) найкраще працює в довгостроковій перспективі, і (б) буде більш дотримуватися принципів RESTful.