我如何指示REST API端点已删除

时间:2018-11-05 09:39:15

标签: rest http api-design

我有一个端点

DELETE /events/<id>

在新版API中,我们将删除此API

现在,如果客户端请求相同的URL,我应该输出什么状态代码

我找到了一些选择。

  1. 410 Gone。这是最接近的。但这与资源有关。 这与管理API无关。我的意思是,如果GET /events/1有效,那么将/events/1声明为Gone
  2. 是没有意义的
  3. 301 Moved Permanently302 Found。它们用于重定向。但是替换不是GET呼叫
  4. 405 Method Not Allowed。之所以有意义,是因为现在已允许使用方法DELETE。但是它并没有说过去曾经被允许使用(不确定我们是否需要它)

此端点支持的其他http方法是

GET /events/<id>/
POST /events/
POST /events/<id>/actions/

仅作澄清。当我搜索主题时,我会获得有关资源的更多信息。但是在这里,我担心API的折旧和删除。更多的是管理。

1 个答案:

答案 0 :(得分:1)

这里有些东西扭曲了。

DELETE是动词,表示方法,而不是端点。

/events这是您的端点。

MDN建议410 Gone用于已删除的资源。通用http上下文中的资源可以是任何东西。

  

超文本传输​​协议(HTTP)410消失的客户端错误响应   代码指示不再访问目标资源   在原始服务器上可用,并且这种情况很可能是   永久的。

https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/410

如果要显示某个方法已被删除但端点仍然存在,则可以使用405 Method not allowed

您还应该考虑对API进行版本控制。