Я разрабатываю REST API для проекта, в котором пользователи всегда используют один из нескольких «планов» - каждый план определяет некоторые ограничения ресурсов, например, максимальное количество пользователей, которое может иметь учетная запись, или максимальное количество данных, которые они могут загрузить. После достижения одного из этих ограничений пользователи могут обновить свои планы (по сути, заплатить), чтобы получить больше ресурсов.
Я хочу вернуть специальный код состояния, указывающий ситуацию, когда действие не может быть выполнено из-за ограничений ресурсов учетной записи, и обновление плана решит эту проблему - например, если пользователь использует 100% своей емкости хранения и попытается загрузить дополнительный файл , они получат этот ответ.
Кандидаты, ИМХО:
403 Forbidden
- однако я хотел бы провести различие между этим случаем и другими случаями, когда у пользователя просто нет разрешения на выполнение этого действия.401 Unauthorized
- не очень хорошая идея, мы используем это для проблем, связанных с аутентификацией.402 Payment Required
- имеет смысл, но я беспокоюсь об использовании нестандартного, но зарезервированного кода состоянияЧто-то еще менее стандартное, так
423 Locked
как маловероятно, что мы будем использовать его для чего-то еще в будущем
Другой вариант - использовать что-то очень стандартное, например, 403
указать специфику ошибки в теле ответа.
Мне интересно, какой подход, по вашему мнению, будет (а) работать лучше в долгосрочной перспективе и (б) будет более хорошо придерживаться принципов RESTful.