尝试更新/删除多个项目时,正确的RESTful方法应该是什么?
典型示例:有一个项目列表,即收到的邮件的收入文件夹,您可以在其中通过设置适当的复选框来选择一组项目。然后单击“删除”按钮,并发送删除它们的请愿书。我应该叫什么方法?什么参数?
在这种情况下,很明显我应该使用DELETE,但是它一次只能处理一个项目。另外,我可能不想删除它们,而是将它们存储在另一个文件夹中,这可能意味着使用PATCH,但是同样,该PATCH方法只允许一项。
在这种情况下,很明显我应该使用 DELETE,但它一次只能处理一项。另外,我可能不想删除它们,而是将它们存储在不同的文件夹中,这可能意味着使用 PATCH,但话又说回来,PATCH 方法只允许一项。
您应该修补集合(或其一部分)而不是项目。例如,通过移动项目,您可以使用PATCH /collection/?filter=x {location: newDir}. 删除是一个棘手的问题。您可以使用 PATCH 或替代方法来使用DELETE /collection/?filter=x,但这意味着您要删除集合资源而不是从中删除项目资源。通过批量创建,我认为使用POST /collection/ [item1, item2, ...]是可以的。
办公室。您也可以使用替代的 URI 结构,例如PATCH /books/1+2+3/ {price: 20, currency: "EUR"}. PATCH 也有一种替代语法,您可以将操作名称添加到主体中,例如PATCH /collection/?filter=x {op: "update", location: newDir}。我不喜欢这样,但如果您想使用相同的 URI 重用 PATCH,那么它会变得很方便。另一种方法是将请求发送到单个批处理端点,例如POST /transactions/使用多部分 HTTP 请求。
我认为这里要记住的最重要的部分是,您所做的是将多个操作强制到单个事务中。因此,如果您不需要立即一致性,并且请求之间失去连接也不是问题,那么客户端可以使用简单的循环并行或串行发送多个请求。
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |