我正在升级我们的REST API端点,当客户调用即将被弃用的端点时,我想通知他们。
在响应中使用什么头部,包含类似于“此API版本将被弃用,请查阅最新文档以更新您的端点”的消息?
你应该在响应中使用 "Warning" 头部,并在其中加入类似于以下内容的消息:"299 - This API version is being deprecated, please consult the latest documentation to update your endpoints"。
我正在升级我们的REST API端点,当客户调用即将被弃用的端点时,我想通知他们。
在响应中使用什么头部,包含类似于“此API版本将被弃用,请查阅最新文档以更新您的端点”的消息?
你应该在响应中使用 "Warning" 头部,并在其中加入类似于以下内容的消息:"299 - This API version is being deprecated, please consult the latest documentation to update your endpoints"。
我不会为了向后兼容而更改状态代码中的任何内容。 我会在响应中添加一个“警告”头:
Warning: 299 - "Deprecated API"
您还可以使用发出警告的“代理”指定“-”,并在警告文本中更加明确:
Warning: 299 api.blazingFrog.com "Deprecated API: use betterapi.blazingFrog.com instead. Old API maintained until 2015-06-02"
警告头在这里指定:https://www.rfc-editor.org/rfc/rfc7234#section-5.5。Warn-code 299是通用的,“弃用”不是标准。
您需要告诉您的API客户端记录HTTP警告并监视它。
我现在从未使用过它,但当我的公司在Rest API方面更加成熟时,我会将其集成。
编辑(2019-04-25):正如@Harry Wood所提到的,警告头在文档中与缓存相关的章节中。然而,RFC明确指出“警告可以用于其他目的,包括与缓存有关和其他方面。”
如果您喜欢另一种方法,则此草案https://datatracker.ietf.org/doc/html/draft-dalal-deprecation-header-00建议使用新的标题“Deprecation”。
编辑(2021-01-04):正如@Dima Parzhitsky所提到的,MDN表示此标题已弃用
请求的资源在服务器上不再存在,并且没有任何转发地址。这种情况预计会被视为永久性的。具有链接编辑功能的客户端应在用户批准后删除对请求URI的引用。如果服务器不知道或没有确定条件是否是永久性的设施,则应使用状态代码404(未找到)。除非另有说明,否则此响应可缓存。
410响应的主要目的是通过通知收件人资源是故意不可用的并且服务器所有者希望删除对该资源的远程链接,来协助Web维护任务。这种事件通常发生在限时促销服务和不再在服务器站点工作的个人资源上。没有必要将所有永久不可用的资源标记为“已消失”,也不必保留标记任何时间--这取决于服务器所有者的决定。
我会选择301(永久重定向)。300系列状态码的目的是告诉客户端它们需要执行一个操作。
对 @dret 的回答进行澄清。与弃用相关的有两个HTTP头:Deprecation
(https://datatracker.ietf.org/doc/html/draft-dalal-deprecation-header-00)和Sunset
。
为了通知用户计划弃用的信息,应使用Deprecation
HTTP头。这表示将来某个时间点该端点将被删除。它还允许您指示宣布此事的日期,并描述备选资源。
为了通知用户关于已弃用资源计划的日落时间,除了Deprecation标头外,还应使用Sunset
标头。这在第5节中有描述:https://datatracker.ietf.org/doc/html/draft-dalal-deprecation-header-00#section-5。
Sunset
头草案11 https://datatracker.ietf.org/doc/html/draft-wilde-sunset-header-11 在第1.4节中也澄清了这方面的问题:https://datatracker.ietf.org/doc/html/draft-wilde-sunset-header-11#section-1.4。
207多状态
响应,表明它是一个成功的响应,但也有可能具有第二个被弃用的状态。有一个叫做Sunset
的HTTP头字段,旨在标识一个资源即将被废弃。 https://datatracker.ietf.org/doc/html/draft-wilde-sunset-header 已经进入成为RFC的最后阶段。理想情况下,您的API应该记录它将要使用Sunset
,以便客户端可以查找并采取行动。
warn-date
,它必须与Date
头部以相同的格式进行格式化:"Thu, 02 Apr 2015 12:25:32 GMT"。 - Vasiliy Faronov