каким должен быть соответствующий код состояния http для запроса API POST при попытке создать ресурсы с максимальным пределом - PullRequest
0 голосов
/ 20 марта 2019

Я искал почти 2-3 часа правильный код ответа для ниже POST API, но я не получил правильный ответ, поэтому я прошу кого-нибудь помочь мне здесь.

У нас есть POST API, который создает ресурсы максимум 10 раз. Когда мы вызываем POST API в 11-й раз, мы должны получить ответ с сообщением «Пользователь превысил предел для создания ресурса» и правильный код ответа. Подскажите пожалуйста какой должен быть правильный код ответа.

Ответы [ 3 ]

1 голос
/ 20 марта 2019

При уровне детализации, указанном в вашем вопросе, я бы предложил код состояния в диапазоне 4xx, а также полезную нагрузку ответа, которая содержательно описывает ошибку для клиента.

Вы можете рассмотреть 403 (Fobidden), выражая, что сервер понимает запрос, но отказывается его авторизовать.Однако могут быть другие коды состояния, более подходящие для вашей ситуации, в зависимости от того, чего вы пытаетесь достичь:

  • 402 (Требуется оплата): есликвота запросов была превышена, но при оплате можно было бы выполнить больше запросов, вы можете рассмотреть код состояния 402 (хотя в документации сказано, что он зарезервирован для будущего использования, его формулировка причины довольно яснаи четко определяет его назначение).

  • 429 (слишком много запросов): если вы применяете ограничения на количество запросов в час / день,429 код состояния может соответствовать вашим потребностям.Однако этот код состояния используется сервером для индикации того, что за короткий промежуток времени было получено слишком много запросов, т. Е. Происходит дросселирование клиента.

Если эти коды состояния не работаюткажется, не совпадают, просто перейдите к 400, который выражает неверный запрос.


Коды состояния указывают на результат попытки понять и удовлетворить запрос.

Но вы должны иметь в виду, что кодов состояния иногда недостаточно, чтобы передать достаточно информации об ошибке, чтобы быть полезным.Вот почему вам рекомендуется возвращать полезную нагрузку, которая описывает ошибку. RFC 7807 определяет стандарт для этого.

Если вы создаете для этого свой собственный код состояния (то, что вы могли бы сделать , но это не значит, что вы следует делать ), имейте в виду, что клиенты будут обрабатывать нераспознанные коды состояния как эквивалентные x00 коду состояния этого класса.Из RFC RFC 7231 :

Например, если клиент получает нераспознанный код состояния 471, клиент может предположить, что что-то не так с егозапрашивать и обрабатывать ответ, как если бы он получил код состояния 400 (неверный запрос).Ответное сообщение обычно будет содержать представление, объясняющее статус.

0 голосов
/ 20 марта 2019

Я бы предложил 400, Bad Request.

403 больше для проблем авторизации, которые это не так.Предоставьте четкое объяснение, почему вы возвращаете 400, и вы готовы идти.

Да, это более общее решение, которое делает его более подходящим.

Коды состояния HTTP имеют очень понятные варианты использования, понятные каждому.Не рекомендуется «повторно» использовать один для чего-то другого.

0 голосов
/ 20 марта 2019

Вы должны попытаться использовать статус 4xx. Лично я бы использовал 403, потому что пользователю запрещено создавать объект.

Код ответа статуса ошибки HTTP 403 «Запрещенный клиент» указывает, что сервер понял запрос, но отказывается его авторизовать. Этот статус аналогичен 401, но в этом случае повторная проверка подлинности не будет иметь значения. Доступ навсегда запрещен и связан с логикой приложения, такой как недостаточные права на ресурс. источник

И затем вы можете добавить сообщение в тело запроса, объясняющее, почему запрос не был успешным. Дополнительная информация о 403

Кроме того, мне нравится проверять эту страницу, если мне нужен обзор всех кодов состояния: Коды состояния

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...