【发布时间】:2018-11-05 09:39:14
【问题描述】:
我有一个端点
DELETE /events/<id>
在新版本的 API 中,我们将删除此 API。
现在如果客户端请求相同的 URL,我应该输出什么状态码?
我找到了一些选择。
-
410 Gone。这是最接近的。但它与资源有关。 这与管理 API 无关。我认为这意味着,如果GET /events/1有效,那么声明/events/1是Gone是没有意义的 -
301 Moved Permanently和302 Found。它们用于重定向。但替换不是GET电话 -
405 Method Not Allowed。这是有道理的,因为现在不再允许使用DELETE方法。但它并没有说过去是允许的(不确定我们是否需要它)
此端点支持的其他 http 方法是,
GET /events/<id>/
POST /events/
POST /events/<id>/actions/
只是为了澄清。当我搜索主题时,我会获得有关资源的更多信息。但在这里我担心 API 的折旧和删除。这更像是一种管理。
【问题讨论】:
-
如果您的端点 /events/
中有其他 HTTP 方法,例如 GET、POST、PUT,那么我相信如果您删除 DELETE 方法,您必须显示“405 Method Not Allowed” ,如果不是这种情况,并且您在该端点中没有任何 http 方法,我将显示 404 Not Found 或 410 Gone。 -
@BrankVictoria 在问题中添加了这一点。您可能想添加您的评论作为答案。
-
如果您的 API 相当符合 HATEOAS 标准,您可以(或另外)停止在相应的 GET 中发出“删除”链接。
标签: rest http api-design