rest - 以 RESTful 方式更新多个项目

标签 rest

尝试更新/删除多个项目时,正确的 RESTful 方法应该是什么?

典型示例:有一个项目列表,即收到的邮件的收入文件夹,您可以在其中通过设置适当的复选框来选择一组项目。然后您单击“删除”按钮并发送删除它们的请愿书。我应该调用什么方法?什么参数?

在这种情况下,很明显我应该使用DELETE,但它一次只能处理一项。另外,我可能不想删除它们,而是将它们存储在不同的文件夹中,这可能意味着使用 PATCH,但话又说回来,PATCH 方法只允许一项.

最佳答案

In this case it's pretty obvious I should use a DELETE, but it only works with one item at once. Also, I might not want to delete them, but storing them in a different folder, which might imply using a PATCH, but then again, the PATCH method only allows one item.

您应该修补集合(或其一部分)而不是项目。例如,通过移动项目,您可以使用 PATCH/collection/?filter=x {location: newDir}。删除是一个棘手的问题。您可以使用 PATCH 或使用 DELETE/collection/?filter=x 的替代方法,但这意味着您要删除集合资源,而不是从中删除项目资源。通过批量创建,我认为使用 POST/collection/[item1, item2, ...] 是可以的。

Ofc。您也可以使用替代 URI 结构,例如 PATCH/books/1+2+3/{price: 20,currency: "EUR"}。 PATCH 也有一种替代语法,即将操作名称添加到正文中,例如 PATCH/collection/?filter=x {op: "update", location: newDir}。我不喜欢这样,但如果您想使用相同的 URI 重用 PATCH,那么它会变得很方便。将请求发送到单个批处理端点的另一种选择,例如POST/transactions/ 并使用多部分 HTTP 请求。

我认为这里要记住的最重要的部分是,您所做的是将多个操作强制到单个事务中。因此,如果您不需要立即一致性,并且请求之间失去连接也不是问题,那么客户端可以使用简单的循环并行或串行发送多个请求。

关于rest - 以 RESTful 方式更新多个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33994393/

相关文章:

java - 无法从 html 表单操作属性调用其余 Web 服务

c# - 使用C#的REST API身份验证(OAuth 1.0)

json - 带有请求正文的 HTTP GET 以限制字段和过滤器

java - Rest API 最佳实践 : Multiple parameters search filter API implementation

java - Spring MVC 休息 Controller 未调用

javascript - 如何在 Backbone.js 的 View 中获取模型属性?

api - 如何使用 Varnish 缓存 RESTful API,但仍然使用 HMAC 来签名/验证每个请求?

rest - API网关和ESB有什么区别?

java - 使用 Spring RestTemplate for Android 发出经过身份验证的 POST 请求

java - Dropwizard REST 问题