При уровне детализации, указанном в вашем вопросе, я бы предложил код состояния в диапазоне 4xx
, а также полезную нагрузку ответа, которая содержательно описывает ошибку для клиента.
Вы можете рассмотреть 403
(Fobidden), выражая, что сервер понимает запрос, но отказывается его авторизовать.Однако могут быть другие коды состояния, более подходящие для вашей ситуации, в зависимости от того, чего вы пытаетесь достичь:
402
(Требуется оплата): есликвота запросов была превышена, но при оплате можно было бы выполнить больше запросов, вы можете рассмотреть код состояния 402
(хотя в документации сказано, что он зарезервирован для будущего использования, его формулировка причины довольно яснаи четко определяет его назначение).
429
(слишком много запросов): если вы применяете ограничения на количество запросов в час / день,429
код состояния может соответствовать вашим потребностям.Однако этот код состояния используется сервером для индикации того, что за короткий промежуток времени было получено слишком много запросов, т. Е. Происходит дросселирование клиента.
Если эти коды состояния не работаюткажется, не совпадают, просто перейдите к 400
, который выражает неверный запрос.
Коды состояния указывают на результат попытки понять и удовлетворить запрос.
Но вы должны иметь в виду, что кодов состояния иногда недостаточно, чтобы передать достаточно информации об ошибке, чтобы быть полезным.Вот почему вам рекомендуется возвращать полезную нагрузку, которая описывает ошибку. RFC 7807 определяет стандарт для этого.
Если вы создаете для этого свой собственный код состояния (то, что вы могли бы сделать , но это не значит, что вы следует делать ), имейте в виду, что клиенты будут обрабатывать нераспознанные коды состояния как эквивалентные x00
коду состояния этого класса.Из RFC RFC 7231 :
Например, если клиент получает нераспознанный код состояния 471
, клиент может предположить, что что-то не так с егозапрашивать и обрабатывать ответ, как если бы он получил код состояния 400
(неверный запрос).Ответное сообщение обычно будет содержать представление, объясняющее статус.