rest - 如何指示 REST API 端点已删除

标签 rest http api-design

我有一个端点

DELETE /events/<id>

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

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

我找到了一些选择。

  1. 410 Gone 。这是最接近的一个。但这与资源有关。 这与管理 API 无关。我认为这意味着,如果 GET /events/1有效,那么声明 /events/1 就没有意义了是 Gone
  2. 301 Moved Permanently302 Found 。它们用于重定向。但替换的不是GET打电话
  3. 405 Method Not Allowed 。这是有意义的方法 DELETE现在不再允许了。但它并没有说过去是允许的(不确定我们是否需要它)

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

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

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

最佳答案

你这里有些事情被扭曲了。

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

/events 这是您的端点。

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

The HyperText Transfer Protocol (HTTP) 410 Gone client error response code indicates that access to the target resource is no longer available at the origin server and that this condition is likely to be permanent.

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

如果您想显示某个方法已被删除,但端点仍然存在,您可能会使用405 Method not allowed

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

关于rest - 如何指示 REST API 端点已删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53151738/

相关文章:

javascript - WebSockets : useful for reducing overhead?

node.js - Chai 没有到达 .end()

javascript - 开始为基于 Django REST API 的系统开发客户端(CORS 错误)?

asp.net - ASP.NET Web API 中除 IQueryable 之外的 OData 查询和类型

c# - REST API 可选参数

.net - 为什么 C++/CLI 编译器不会针对过时的属性调用生成警告?

java - 为什么 Duration 类没有 'toSeconds()' 方法?

java - 如何使用 Java REST 服务和数据流下载文件

c - 我写了一个简单的 http 服务器,似乎可以工作,但在尝试通过浏览器访问时遇到问题

java - 使用 Java 通过 HTTP 下载未知长度的文件