Я бы не стал ничего менять в коде состояния, чтобы он был обратно совместим. Я бы добавил в ответ заголовок «Предупреждение»:
Warning: 299 - "Deprecated API"
Вы также можете указать «-» с «Агентом», который выдает предупреждение, и быть более явным в тексте предупреждения:
Warning: 299 api.blazingFrog.com "Deprecated API: use betterapi.blazingFrog.com instead. Old API maintained until 2015-06-02"
Заголовок предупреждения указан здесь: https://tools.ietf.org/html/rfc7234#section-5.5 . Код предупреждения 299 является общим, "Устарело" - нестандартным.
Вы должны указать своим клиентам API регистрировать предупреждения HTTP и отслеживать их.
Я никогда не использовал его до сих пор, но когда моя компания станет более зрелой в Rest API, я интегрирую его.
Изменить (2019-04-25): как отметил @Harry Wood, заголовок предупреждения находится в главе документации, связанной с кешированием. Однако RFC ясенWarnings can be used for other purposes, both cache-related and otherwise.
Если вы предпочитаете альтернативный метод, этот черновик https://tools.ietf.org/html/draft-dalal-deprecation-header-00 предлагает новый заголовок «Устарело».
Date
значения в том же сообщении, получатель ДОЛЖЕН исключить значение-предупреждения. . . до . . . используя сообщение ».Date
заголовок:"Thu, 02 Apr 2015 12:25:32 GMT"
.Warning
заголовок действительно хорош как место для свободного текста, чтобы описать устаревание. ЭтиDeprecation
иSunset
заголовки , указанные в других ответах, казалось бы, вытекая стандартным решением для описания устаревания в туже потенциально более машиночитаемом способом.Warning
заголовок не относится только к кешам. Первое предложение вWarning
разделе - «Предупреждения могут использоваться для других целей, как связанных с кешем, так и в иных целях».Вы можете использовать 410 (Gone) .
Вот как это описывают определения кода состояния W3C :
источник
410 Gone
это не об устаревании, а о методах, которые больше не доступны. Как сказал @BenC, лучший способ - использовать заголовок WarningЯ бы / пошел с 301 (перемещен навсегда). Коды серии 300 должны сообщать клиенту, что у них есть действие.
источник
Я бы порекомендовал
207 Multi-Status
ответ, указывающий, что это успешный ответ, но он также потенциально имеет второй устаревший статус.источник
Deprecation
заголовка (который, к сожалению, клиенты, скорее всего, проигнорируют), затем используйте этот код 207, затем переместите 301, а затем, наконец, пропадет 410!Уточнение ответа @dret. Есть два соответствующих HTTP-заголовка для устаревания:
Deprecation
( https://tools.ietf.org/html/draft-dalal-deprecation-header-00 ) иSunset
.Чтобы проинформировать пользователей о планируемом прекращении поддержки,
Deprecation
следует использовать HTTP-заголовок. Это указывает на то, что конечная точка будет отброшен некоторое время в будущем. Он также позволяет указать дату, когда это было объявлено, и описать альтернативные ресурсы.Чтобы проинформировать пользователей о планируемой дате прекращения использования устаревшего ресурса,
Sunset
следует использовать заголовок в дополнение к заголовку Deprecation. Это описано в разделе 5 https://tools.ietf.org/html/draft-dalal-deprecation-header-00#section-5 .Проект # 11 https://tools.ietf.org/html/draft-wilde-sunset-header-11 из
Sunset
проясняет заголовка этот аспект , а также в разделе 1.4 https://tools.ietf.org/html/draft-wilde -sunset-header-11 # раздел-1.4 .источник
Существует поле заголовка HTTP,
Sunset
которое призвано сигнализировать о предстоящем прекращении поддержки ресурса. https://tools.ietf.org/html/draft-wilde-sunset-header находится на последних этапах становления RFC. В идеале ваш API должен задокументировать, что он будет использоватьSunset
, чтобы клиенты могли его искать и действовать, если захотят.источник