以RESTful方式更新多个项目

以RESTful方式更新多个项目,rest,Rest,当尝试更新/删除多个项目时,正确的RESTful方法应该是什么 典型示例:有一个项目列表,即接收邮件的收入文件夹,您可以通过设置“批准”复选框来选择一组项目。然后点击“删除”按钮,发送删除申请。我应该调用什么方法?什么参数 在这种情况下,很明显我应该使用DELETE,但它一次只能处理一个项目。另外,我可能不想删除它们,而是将它们存储在另一个文件夹中,这可能意味着使用补丁,但同样地,补丁方法只允许一项 在这种情况下,很明显我应该使用DELETE,但它只是 一次处理一个项目。另外,我可能不想删除它们

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

典型示例:有一个项目列表,即接收邮件的收入文件夹,您可以通过设置“批准”复选框来选择一组项目。然后点击“删除”按钮,发送删除申请。我应该调用什么方法?什么参数

在这种情况下,很明显我应该使用
DELETE
,但它一次只能处理一个项目。另外,我可能不想删除它们,而是将它们存储在另一个文件夹中,这可能意味着使用
补丁
,但同样地,
补丁
方法只允许一项

在这种情况下,很明显我应该使用DELETE,但它只是 一次处理一个项目。另外,我可能不想删除它们, 但是将它们存储在不同的文件夹中,这可能意味着使用 补丁,但同样,补丁方法只允许一个项目

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

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


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

您可以使用矩阵参数进行删除。假设参数是资源ID,您可以使用未命名的参数,例如
DELETE
to
https://host.com/messages/1;2.3
将删除ID为1、2和3的邮件。

您指的路径方法是补丁?还有,谁说这些方法一次只允许一个项目?在我们的项目中,我们有两种方法:第一种:发送n
DELETE
(删除)或n
PUT
(移动)请求,使其(某种程度上)符合rest。第二:在团队中讨论这个用例是否适合我们所称的“定制操作”。这些自定义操作是“误用的”
POST
请求。例如:
POST users/move/{groupid}
接受用户ID列表作为主体,并将所有用户ID移动到所需的组。使用何种解决方案的标准基本上是“此功能的使用频率是多少?”-如果它不是核心功能,我们选择第一个,如果它经常使用,我们选择第二个。@TimCastelijns一次不允许一个项目使用路径吗?这就是我的想法。如果您有其他文档资源,请让我知道否,取决于服务器是如何实现的,如果它可以在一个请求中处理多个资源,那么您可以使用that@TimCastelijns好的,那么语法是什么呢?