我正在使用MS Graph SDK从/向云下载,编辑和上传Word文档。
在另一个问题中,我建议使用if-match
来避免覆盖其他任何人的更改。我查看了文档,他们没有说明何时会发生覆盖?
我在多线程上下文中运行我的程序,并且很有可能许多用户同时编辑一个文档。
答案 0 :(得分:1)
If-Match
绝对是您追求的目标。如果您为标头提供有效的etag或ctag,则只有当项目的当前状态具有匹配的etag(或ctag取决于提供的标签)时,才会成功完成请求。如果值不匹配,则会返回412 Precondition Failed
响应。
是否在标题中提供etag或ctag的选择取决于您对我的敏感程度。 etag涵盖文件的所有更改,而ctag仅涵盖内容更改。因此,如果您在If-Match
标题中提供了etag,并且有人重命名了该文件,则您的请求将失败。另一方面,如果您提供了ctag,则只有在实际文件内容发生更改时才会失败。
现在合并是一个完全不同的主题,不幸的是,这是你需要写的。 OneDrive不是在理解所有各种文件类型的语义,因此不知道什么是冲突的变化,什么是非冲突的变化。通过扩展,它也不知道如何为您合并非冲突的更改。如果您最终因服务更改而导致前提条件失败,则需要下载更新的文件并自行执行合并。