在 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 中批量更新的主要内容,如果未能解决你的问题,请参考以下文章