rest - DELETE/collection 某些项目不能删除怎么办?

标签 rest design-patterns

我有一组项目,其中一些可能会或可能不会被删除,具体取决于某些先决条件。如果用户想要删除资源 ( DELETE /collection/1 ) 并且该资源存在外部依赖关系,则服务器将返回错误。但是如果用户想要删除整个集合 ( DELETE /collection ) 会发生什么?

应该删除所有可以删除的资源并服务器返回 2xx,还是服务器应该保留所有内容并返回 4xx?哪个是预期的行为?

最佳答案

作为 REST API 使用者,我希望操作是原子的,并且可能会返回 409 Conflict如果其中一个删除失败,则提供详细信息。另外,正如@jbarrueta 指出的那样,DELETE 方法在理论上是幂等的。

现在,如果不可删除的资源在您的用例中是正常事件并且经常发生,您可能希望稍微偏离常规,删除所有可以删除的内容并返回类似 206 Partial Content 的内容。 (虽然不知道这对 DELETE 是否合法)以及有关未删除资源的详细信息。

但是,如果您需要很好地管理错误情况,最好发送单独的 DELETE 命令。

关于rest - DELETE/collection 某些项目不能删除怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30249690/

相关文章:

python - 在 python 中别名方法名称的最佳方法是什么?

c++ - 在类中创建对象之前调用函数

javascript - getSomethingByAnother() 方法的 REST 风格是什么

php - CSRF 和 RESTful API(symfony2,php)

javascript - 使用可定制的 props 来响应 Native FlatList(良好实践)

php - 将变量与实例传递给构造函数

java - Wildfly 16,注释@JsonIgnore不起作用

asp.net-mvc - ASP.MVC 中的"new"和 'Create' RESTful 操作名称或 'Create'

ruby-on-rails - 在模型保存时获取 ActiveRecord::AssociationTypeMismatch

java - 解开 builder 模式的疑惑