No cambiaría nada en el código de estado para que sea compatible con versiones anteriores. Agregaría un encabezado de "Advertencia" en la respuesta:
Warning: 299 - "Deprecated API"
También puede especificar el "-" con el "Agente" que emite la advertencia y ser más explícito en el texto de advertencia:
Warning: 299 api.blazingFrog.com "Deprecated API: use betterapi.blazingFrog.com instead. Old API maintained until 2015-06-02"
El encabezado de advertencia se especifica aquí: https://tools.ietf.org/html/rfc7234#section-5.5 . Warn-code 299 es genérico, "Deprecated" no es estándar.
Debe decirle a sus clientes API que registren las advertencias HTTP y las monitoreen.
Nunca lo he usado hasta ahora, pero cuando mi empresa esté más madura en Rest API, lo integraré.
Editar (2019-04-25): como lo mencionó @Harry Wood, el encabezado de Advertencia está en un capítulo relacionado con el almacenamiento en caché en la documentación. Sin embargo, el RFC es claroWarnings can be used for other purposes, both cache-related and otherwise.
Si prefiere un método alternativo, este borrador https://tools.ietf.org/html/draft-dalal-deprecation-header-00 sugiere un nuevo encabezado "Desactivación".
Date
valor en el mismo mensaje, el destinatario DEBE excluir el valor de advertencia. . . antes de . . . usando el mensaje ".Date
encabezado:"Thu, 02 Apr 2015 12:25:32 GMT"
.Warning
encabezado se ve bien como un lugar de texto libre para describir la desaprobación. Los encabezadosDeprecation
ySunset
mencionados en otras respuestas, parecerían ser una solución estándar emergente para describir la desaprobación de una manera más estricta y potencialmente legible por máquina.Warning
El encabezado no está relacionado solo con cachés. La primera oración de laWarning
sección es "Las advertencias se pueden utilizar para otros fines, tanto relacionados con la caché como de otro tipo".Podrías usar 410 (ido) .
Así es como lo describen las Definiciones de códigos de estado del W3C :
fuente
410 Gone
no se trata de obsolescencia, se trata de un método ya no disponible. Como dijo @BenC, la mejor manera es usar el encabezado de advertenciaMe habría ido con 301 (movido permanentemente) Se supone que los códigos de la serie 300 le dicen al cliente que tiene una acción que hacer.
fuente
Recomendaría una
207 Multi-Status
respuesta, indicando que es una respuesta exitosa, pero también potencialmente tiene un segundo estado obsoleto.fuente
Deprecation
encabezado (que los clientes probablemente ignorarán desafortunadamente), luego use este código 207, luego 301 se movió y finalmente 410 desapareció.Refinando la respuesta de @dret. Hay dos encabezados HTTP relevantes para la desaprobación:
Deprecation
( https://tools.ietf.org/html/draft-dalal-deprecation-header-00 ) ySunset
.Para informar a los usuarios sobre la desactivación planificada, se
Deprecation
debe utilizar el encabezado HTTP. Esto indica que el punto final se eliminará en algún momento en el futuro. También le permite indicar la fecha en que se anunció y describir recursos alternativos.Para informar a los usuarios sobre la fecha de caducidad planificada del recurso en desuso, se
Sunset
debe utilizar el encabezado además del encabezado Desactivación. Esto se describe en la sección # 5 https://tools.ietf.org/html/draft-dalal-deprecation-header-00#section-5 .El borrador n. ° 11 https://tools.ietf.org/html/draft-wilde-sunset-header-11 del
Sunset
encabezado aclara este aspecto también en la sección 1.4 https://tools.ietf.org/html/draft-wilde -sunset-header-11 # sección-1.4 .fuente
Hay un campo de encabezado HTTP llamado
Sunset
que está destinado a señalar una próxima desaprobación de un recurso. https://tools.ietf.org/html/draft-wilde-sunset-header se encuentra en las últimas etapas para convertirse en un RFC. Idealmente, su API debería documentar lo que va a utilizarSunset
, para que los clientes puedan buscarla y actuar en consecuencia, si así lo desean.fuente