Requests: 418 Я чайник

Созданный на 11 авг. 2017  ·  22Комментарии  ·  Источник: psf/requests

В запросах реализован код состояния 418 Я - чайник в status_codes.py .

Его источником является RFC2324, протокол управления гипертекстовым кофейником (HTCPCP / 1.0). Обратите внимание на заголовок - HTCPCP / 1.0 не является HTTP / 1.x.

HTCPCP был шуткой Ларри от 1 апреля, чтобы проиллюстрировать, как люди злоупотребляют HTTP различными способами. По иронии судьбы, он не используется для злоупотребления самим HTTP - люди внедряют части HTCPCP в свои HTTP-стеки.

В частности, поддержка Node для HTCPCP 418 Код состояния «Я чайник» использовалась в качестве аргумента в рабочей группе HTTP для предотвращения использования 418 в HTTP в реальных целях.

Хотя у нас есть несколько запасных кодов состояния HTTP 4xx, которые сейчас не зарегистрированы, семантика HTTP - это то, что (надеюсь) прослужит долго, поэтому однажды нам может понадобиться этот код.

Пожалуйста, подумайте об удалении поддержки 418 из запросов, поскольку это не код состояния HTTP (даже по его собственному определению). Я знаю, что это забавно, я знаю, что несколько человек придумали реализации для развлечения, но это не должно загрязнять основной протокол; люди могут достаточно легко расширить Node, если хотят поиграть с нестандартной семантикой.

Спасибо,

/ cc @Lukasa

Самый полезный комментарий

Хотя я понимаю, что 418 не является частью спецификации кода состояния HTTP в RFC 7231, он действительно существует. Даже Google реализовал это здесь . В том маловероятном случае, если IETF решит реализовать реальное использование 418, у нас будет много предупреждений для решения этой проблемы. Я за то, чтобы оставить это как есть, если нет более веской причины, по которой его нужно удалить.

Все 22 Комментарий

Кстати, я знаю, что это критическое изменение; отказ от поддержки и откладывание до следующего основного выпуска - это нормально.

Строка рассматриваемого кода: https://github.com/requests/requests/blob/master/requests/status_codes.py#L55

Обратите внимание на альтернативные версии для 200 OK: https://github.com/requests/requests/blob/master/requests/status_codes.py#L13

Хм. Единственное, что меня беспокоит, - это использование юникода и обратной косой черты; запросы не выдают их, не так ли?

Нет, это только для обратного просмотра - то же самое с «Я чайник».

Хорошо, это хорошо. Проблема в том, что реализация используется в качестве доказательства, чтобы предотвратить фактическое использование кода состояния, что _в конечном итоге_ станет проблемой.

Пожалуйста, посетите https://github.com/nodejs/node/issues/14644 и https://github.com/golang/go/issues/21326 для обсуждения подобных изменений.

Я могу удалить его, если мы не хотим добавить другие коды статуса, такие как 420 и друзья.

HTTPbin.org сохраняет его :)

Отдельные серверы меня меньше беспокоят :)

Отправьте пиар!

Однако сделайте это против ветки 3.0.0, это будет критическое изменение.

Подожди! Я человек, стоящий за сайтом http://save418.com (https://github.com/WhataShane/save418). Мне, как и многим другим , нравится натыкаться на (почти полностью) безобидные приколы вроде 418. Это такая штука, которая вызовет у вас улыбку, даже когда вы вынуждены уложиться в срок проекта, а ваш босс тявкает на вас один офис закончился. Было бы очень обидно увидеть это.

Процитируем @romellem из

Чтобы прояснить, является ли ваш аргумент в пользу того, что когда / если закончится блок 400, мы захотим, чтобы этот дополнительный код был доступен, чтобы немного увеличить полезность блока 400?

Если я не читаю неправильно, в блоке 400 кодов состояния HTTP доступно более 50 кодов. Если доступное «пространство» блока 400 превышает 50%, это может быть преждевременной оптимизацией для проблемы, которая может никогда не возникнуть (то есть в блоке 400 заканчиваются доступные коды).

Не пытаюсь показаться резким, но мне, например, нравятся забавные маленькие пасхалки, которые вы найдете на протяжении всей карьеры программиста. Для меня это показывает, что все, что заставляет компьютер работать, по-прежнему создается людьми, и хранить небольшие кусочки этого человеческого элемента - это хорошо (на мой взгляд). Ваш аргумент здравый и логичный, но это запрошенное изменение хоть немного снижает «забавность» Go (и, возможно, NodeJS) в духе инженерной надежности. В конце концов, я должен сказать, что не думаю, что компромисс того стоит.

(Я ценю урок истории! Я всегда думал, что 418 является частью спецификации HTTP / 1.x; не знал о спецификации "HTCPCP / 1.0". 🙂)

Я согласен, что это забавное пасхальное яйцо.

Запросы относятся к себе серьезно, но не слишком серьезно. :)

Возможно, это фраза «слишком серьезно».

Разве здесь нет очевидного ответа, чтобы сделать его частью спецификации, начав с нового RFC?

@tSavo Ясно!

Хотя я понимаю, что 418 не является частью спецификации кода состояния HTTP в RFC 7231, он действительно существует. Даже Google реализовал это здесь . В том маловероятном случае, если IETF решит реализовать реальное использование 418, у нас будет много предупреждений для решения этой проблемы. Я за то, чтобы оставить это как есть, если нет более веской причины, по которой его нужно удалить.

Дай мне свои ключи.

Чтобы внести ясность, я согласен с остальной частью команды Requests: мы должны оставить здесь отображение 418. Но причина , я согласен чисто прагматическая, а не из - за забавным пасхальное яйцо (хотя это интересно): codes.py используются для построения отображения по причине фразы код. По этой причине он должен включать любую фразу причины, которая с некоторой вероятностью может появиться для данного кода. На данный момент это «Я чайник». Если это изменится, мы добавим любую другую фразу, назначенную IANA.

@mnot , не стесняйтесь использовать этот ответ как обязательство, в котором говорится, что IETF / IANA может свободно использовать 418 повторно, а не блокировать его от нашего имени. 😉 Я думаю, что фразы разума в любом случае глупы.

В порядке; это не форум для обсуждения достоинств 418. @mnot, если вы хотите продолжить, напишите мне по электронной почте. Для всех остальных: мы ценим ваш вклад, но я очень доволен принятым нами решением.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

jakul picture jakul  ·  3Комментарии

avinassh picture avinassh  ·  4Комментарии

ReimarBauer picture ReimarBauer  ·  4Комментарии

remram44 picture remram44  ·  4Комментарии

brainwane picture brainwane  ·  3Комментарии