2017-08-29 11 views
1

我正在使用MS Graph SDK从Word中下载,编辑和上传Word文档到云中。图形API如何处理并发上传?

在另外一个问题,我建议使用if-match避免覆盖别人的变化。我看了文档,他们没有指定何时覆盖会发生?只有在有冲突的变化

  1. 上传会失败?
  2. 如果否,是否有任何合并非冲突更改的机制?

我在多线程环境中运行我的程序,很多用户同时可以编辑一个文件。

回答

1

If-Match绝对是你追求的。如果您为标题提供了有效的etag或ctag,则只有当项目的当前状态具有匹配的etag(或ctag,取决于提供的内容)时,该请求才会成功完成。如果值不匹配,则返回412 Precondition Failed响应。

是否提供的eTag或标头中的反恐怖主义行动小组的选择是你想我怎么敏感的队伍。 etag覆盖文件的所有更改,只有ctag仅涵盖内容更改。因此,如果您在If-Match标头中提供了etag,并且有人重命名了该文件,则您的请求将失败。另一方面,如果您提供了ctag,它只会在实际文件内容发生变化时才会失败。

现在合并是一个完全不同的话题,不幸的是,你这是一个你需要写。 OneDrive没有了解所有各种文件类型的语义,因此不知道什么是冲突变更,什么是非冲突变更。通过扩展,它也不知道如何合并非冲突的更改。如果您最终得到服务更改导致的先决条件失败,则需要下载更新的文件并自行执行合并。

+0

就我而言,我将下载后编辑文档。所以当上传“值不会一直匹配”。这是否意味着,我会一直得到'402错误'?如果没有,图形Api是使用一种机制来跟踪更改? – Mhd

+0

因此,当您下载文档时,您需要在响应中记录ETag或CTag标头。这些是您尝试将更新后的文档重新放入OneDrive时提供的内容。只要没有其他人修改文档,您提供的ETag/CTag应该与OneDrive中的当前状态匹配,并且请求应该成功。 – Brad

+0

会发生什么情况当两个同时发生同一个etag的更新请求同时发生时? – Mhd

相关问题