2013-03-01 37 views
1

假设我的服务器有一组员工资源。另外,假设客户端应用程序使用这个员工资源集合来创建其他资源,或者为了简单起见,假设我想从客户端应用程序更新整个员工集合。REST - 在创建或更新资源集合(如果某些资源已被删除)时该怎么做?

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

交易是否应该处理好的员工,并忽略缺少的员工,或者整个交易是否会失败,并通知客户它为什么失败?

回答

2

有很多选项。

410 Gone可用于指示“曾经是资源且永远不会再次的404”,用于通知某些内容已被删除。接受410的客户可以采取行动。

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

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

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

避免在JSON响应中重复使用标题和状态码表示的内容。消息主体应该只包含有关资源的信息,而不是事务。

相关问题