Запуск API, если я исправлю заголовок типа содержимого, это нарушит работу клиентов?

Я не добавил бы изображение между машинами PPC И Intel. Мне более любопытно относительно того, если бы Тигр 10.4.11 установки отобразил бы через G4 и eMac's все равно.

14
задан 2 August 2016 в 13:08
5 ответов

, как плохо это могло испортить вещи для наших существующих клиентов?

Это могло полностью снизить их линкоры, если они написали код, который полагается на этот Тип контента , являющийся неправильным.

я не ожидал бы, что библиотеки бросят ошибки, но я ожидаю, что в некоторых случаях строгим библиотекам переопределили их поведение для обработки неправильного типа MIME.

, Если Ваш API имеет значение версии/пересмотра в поле запроса где-нибудь, повысьте его, и в новой версии возвращают корректный тип, но продолжают возвращать неправильный тип в более старых версиях. Если у Вас нет такого поля запроса, теперь хорошее время для добавления того.

30
ответ дан 20 November 2019 в 23:01

Вы ожидали бы, что многие различные клиентские библиотеки HTTP бросят фатальные ошибки при наблюдении такого изменения?

номер каждая клиентская библиотека HTTP, с которой я знаком, проигнорирует заголовок типа контента, если программист конкретно не прочитает тот заголовок и делает что-то с ним. Я могу вообразить библиотеку где тип контента: application/json автоматически заставляет json синтаксический анализатор принимать участие, но я не знаю ни о каком случае, где это на самом деле происходит.

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

, Как они замечали неправильный заголовок? Могло бы стоить посмотреть на это, потому что, если неправильный заголовок на самом деле вызывал их проблемы, они ясно только игнорировали его, и у них могли бы быть проблемы, если это фиксируется.

11
ответ дан 20 November 2019 в 23:01

Слишком трудно сказать, не получая выход от всех Ваших клиентов. Я предложил бы проявить один из следующих двух подходов для обновления API до против Затем.

  1. Расширяют существующий API. Добавьте строку запроса или некоторую другую переменную к Вашему API, который имеет значение для использования против Затем. Для всех запросов с помощью той переменной используйте обновленный тип контента.
  2. Выполнение экземпляр Подготовки или Подготовки производства Вашего API параллельно с Вашим текущим API. Это должно быть почти идентично производству. Даже с помощью того же бэкенда. Хотя у этого будут предложенные изменения для против Затем.

В любом сценарии, передайте своим клиентам изменения, которые требуется внести и цель cutover дата/время. Поощрите их тестировать задолго до установленного срока, чтобы гарантировать, что нет никакого сервисного разрушения.

Гарантируют, чтобы у Вас была специализированная страница, детализирующая изменения, внесенные в против Затем. Это должно быть включено в связь, отосланную Вашим клиентам. Если Вы обсудили кого-либо, фиксирует с существующими клиентами, включайте клиенты на этой странице.

Наконец, шагайте строка между сверхобщением с Вашими клиентами и спамом их. Эти уведомления могут быть легко пропущены, поскольку больше непосредственных/срочных приоритетов подходит.

FWIW, если бы вещи в настоящее время работают, я не волновался бы слишком много об этом. Если, например, Вы находите, что это вызывает значительную уязвимость системы обеспечения безопасности затем, это было бы большой причиной выставить это изменение. Иначе я ожидал бы чего-то более нажимающего для включения этого изменения с.

6
ответ дан 20 November 2019 в 23:01

Я заметил два последствия:

  1. Некоторые клиентские библиотеки не обработают ответ правильно. Например, ответ возвращает строку вместо json или массива.
  2. Сжатие не всегда применяется.
-2
ответ дан 20 November 2019 в 23:01

Вот пример библиотеки (хорошо, единственная команда), который это повредило бы:

cmdlet Invoke-RestMethod действует по-другому с JSON. Если результатом запроса является JSON, XML или ATOM/RSS (и я думаю, что он основан на заголовке), он анализирует/десериализовывает его и возвращает собственные объекты, иначе он возвращает необработанные данные.

, Таким образом, существующий код был бы написан для контакта со строкой (возможно, путем передачи его ConvertFrom-Json ) и внезапно начнет перестать работать.

5
ответ дан 20 November 2019 в 23:01

Теги

Похожие вопросы