В настоящее время я реализую HTTP API, мой первый в истории.
Я тратил много времени, просматривая страницу Википедии с кодами состояния HTTP, потому что я полон решимости реализовать правильные коды для нужных ситуаций. На этой странице указан код с номером 420, который является пользовательским кодом, который Twitter использовал для ограничения скорости.
Хотя уже есть код для ограничения скорости. Это 429.
Это заставило меня задуматься, почему они устанавливают пользовательский, когда уже есть вариант использования. Это просто мило? И если да, то какие обстоятельства позволят вернуть другой код состояния, и что, если возникнут какие-либо проблемы с клиентами, могут возникнуть?
Я где-то читал, что Mozilla не реализует 418: I’m a teapot
ответ на шутку , что заставляет меня думать, что клиенты выбирают, какие коды состояния они реализуют. Если это правда, то я могу представить, что забавный маленький твиттер улучшил ваш спокойный код, создавая проблемы.
Если я не ошибаюсь, и мы можем присвоить любой номер кода для обозначения того, что нам нравится, и это единственное соглашение гласит, что 404 означает не найден, а 429 означает успокоиться.
источник
420
существует и что он «вышел из строя».Этот вопрос немного углубляется в проблему. Но дело в том, что, хотя технически вы можете создать любой код состояния, какой захотите, создание кода состояния вне традиционной области значений кода состояния только делает ваш API более тупым и загадочным для других. Если не в этом суть, и API, который вы создаете, настолько удивителен, что каждый с радостью изменит свой код, чтобы следовать вашему примеру, так что это все равно имеет значение?
Это сводится к следующему: любой стандарт может быть нарушен. Но если ты сломаешь это, что ты получаешь или теряешь при этом?
В общем, в случаях, когда вы можете сделать что-то другое, но стандарты подразумевают стандарты, лучше придерживаться стандартов, если нет очень веской и убедительной причины отклоняться от установленных стандартов. В случае с Twitter
420: Enhance Your Calm
они создают код ответа, который четко говорит об уникальной ситуации, с которой они сталкиваются. Что замедляет запросы, не отказывая в обслуживании.источник