REST - 创建或更新资源集合时如果删除了某些资源,该怎么办?

时间:2013-03-01 16:11:18

标签: rest

假设我的服务器有一组员工资源。此外,假设客户端应用程序使用此员工资源集合来创建其他资源,或者为了简单起见,假设我想从客户端应用程序更新整个员工集合。

如果我的客户端应用程序与服务器不同步,某些员工资源已从服务器中删除,然后客户端应用程序尝试更新大批员工(例如100,000或某些),会发生什么情况大数字。这笔交易会发生什么?

交易是否应该处理好员工并忽略丢失的员工,或者整个交易是否应该通知客户关于其失败的原因?

1 个答案:

答案 0 :(得分:2)

有很多选择。

410 Gone可用于表示“曾经是资源且永远不会再次出现的404”,对于通知某些内容已被删除非常有用。收到410的客户可以采取行动。

您还可以使用ETags机制,它提供了另一种并发流。每个资源都应该有一个ETag,服务器可以使用标题If-None-Match和代码412 Precondition Failed来解决客户端有关冲突的信息。

您可以忽略丢失的那些并使用Warning标头通知客户端,该标头可以包含更多数据。

WebDAV(扩展HTTP)支持批处理操作并支持返回多个状态代码。它用于具有类似并发问题的HTTP文件系统。

避免在JSON响应中重复使用标头和状态代码表达的内容。邮件正文应仅包含有关资源的信息,而不包含事务。