当资源收到 DELETE 请求时,相关资源会发生什么情况?
What happens to related resources when a resource receives a DELETE request?
假设一个 API 具有用于端点 /authors/:id
的方法 DELETE
,它还会删除该作者的所有帖子。
我了解,当作者从数据库中删除时,所有 GET
对 /authors/:id/posts
的请求都应以 410 GONE
响应,表明该资源不再可用。
API应该如何理解资源曾经存在但不再存在?毕竟,查询 SELECT * FROM posts WHERE author_id = id;
是空的。
我想到的唯一“解决方案”是不删除帖子,而是检查数据库中是否存在作者并采取相应措施。
在大多数业务应用程序中,您真的不想在正常操作流程中删除记录,尤其是当您随后必须级联这些删除时。
例如,在财务应用程序中,当客户停止与您开展业务时,您不想删除该客户记录和过去的所有销售 - 您想要设置一个标志说“此客户不再活跃。
这通常被称为 soft delete.
您的 REST API 可以解释已删除的状态以发出正确的状态代码(GONE
,而不是 NOT FOUND
)
假设一个 API 具有用于端点 /authors/:id
的方法 DELETE
,它还会删除该作者的所有帖子。
我了解,当作者从数据库中删除时,所有 GET
对 /authors/:id/posts
的请求都应以 410 GONE
响应,表明该资源不再可用。
API应该如何理解资源曾经存在但不再存在?毕竟,查询 SELECT * FROM posts WHERE author_id = id;
是空的。
我想到的唯一“解决方案”是不删除帖子,而是检查数据库中是否存在作者并采取相应措施。
在大多数业务应用程序中,您真的不想在正常操作流程中删除记录,尤其是当您随后必须级联这些删除时。
例如,在财务应用程序中,当客户停止与您开展业务时,您不想删除该客户记录和过去的所有销售 - 您想要设置一个标志说“此客户不再活跃。
这通常被称为 soft delete.
您的 REST API 可以解释已删除的状态以发出正确的状态代码(GONE
,而不是 NOT FOUND
)