在 Rest API 中批量更新

Posted

技术标签:

【中文标题】在 Rest API 中批量更新【英文标题】:Batch Updating in Rest API 【发布时间】:2020-12-04 12:40:36 【问题描述】:

我有一个关于 REST API 设计的奇怪问题!

有一个资源叫users,有不同的user-types

如果我想通过 Rest 设计删除用户,我会有一个类似的端点

删除 /users/id

但现在我想删除所有具有特定用户类型的用户,也许还有其他我无法作为查询参数发送的参数。我阅读了一堆反对使用正文参数进行删除的文档

所以我认为使用POST /users/delete 路由会是更好的选择。

现在我很困惑我的新路由POST /users/delete 是否可以同时用于单个用户删除和多个用户删除。这是否违反任何 REST 标准?

如果不是,还有什么方法可以做到这一点?

【问题讨论】:

您可以尝试向用户类型添加自定义操作,例如 /user_type/:id/clear? 【参考方案1】:

这是否违反任何 REST 标准?

不 - 它可能违反了某些 Rails 约定,但就 REST 客户端而言,它完全没问题。


将您的问题翻译成 html 和万维网语言可能会有所帮助:如果您有两个 不同 提交请求的 Web 表单,是否违反了 REST 原则相同的资源?

答案是否定的——它仍然“正常工作”;浏览器使用标准化的处理规则来获取表单的信息并从中创建适当的 HTTP 请求,然后通过网络将其发送到正确的位置,而无需了解任何有关语义的信息(除了定义的通用语义由 HTTP 规范)。

【讨论】:

【参考方案2】:

我相信你可以做到。可以使用 REST 方式删除单个资源,删除多个可以使用 POST /users/delete

RESTful Web API 没有“官方”标准。这是因为 REST 是一种架构风格,而 SOAP 是一种协议。 REST 本身不是标准,但 RESTful 实现使用了标准,例如 HTTP、URI、JSON 和 XML。

-- ***

是的,通过POST 实现多重销毁并没有违反任何 REST 原则

【讨论】:

以上是关于在 Rest API 中批量更新的主要内容,如果未能解决你的问题,请参考以下文章

在 Django Rest Framework 中批量更新数据

如何通过 JSON API 实现复杂的条件批量部分更新?

使用 Vue 使用 API 批量更新

elasticsearch---批量修改,批量更新某个字段

通过Magento API批量更新产品和税类

Stargate REST API 是不是支持 Cassandra 批量查询?