Office365 Graph API如何处理并发上传?

Office365 Graph API如何处理并发上传?,office365,microsoft-graph-api,onedrive,Office365,Microsoft Graph Api,Onedrive,我正在使用MS Graph SDK从云端下载、编辑和上传Word文档 在另一个问题中,我得到了避免覆盖其他人的更改的建议。我查看了文档,他们没有指定何时会发生覆盖 仅当存在冲突更改时,上载才会失败 如果否,是否有任何机制合并非冲突更改 我在多线程环境下运行我的程序,一个文档很有可能被多个用户同时编辑。如果匹配肯定是你想要的。如果为标头提供了有效的etag或ctag,则只有当项的当前状态具有匹配的etag(或ctag,具体取决于提供的etag)时,请求才会成功完成。如果值不匹配,将返回412前置条

我正在使用MS Graph SDK从云端下载、编辑和上传Word文档

在另一个问题中,我得到了避免覆盖其他人的更改的建议。我查看了文档,他们没有指定何时会发生覆盖

  • 仅当存在冲突更改时,上载才会失败
  • 如果否,是否有任何机制合并非冲突更改

  • 我在多线程环境下运行我的程序,一个文档很有可能被多个用户同时编辑。

    如果匹配
    肯定是你想要的。如果为标头提供了有效的etag或ctag,则只有当项的当前状态具有匹配的etag(或ctag,具体取决于提供的etag)时,请求才会成功完成。如果值不匹配,将返回
    412前置条件失败
    响应

    在报头中提供etag还是ctag的选择取决于您希望的敏感程度。etag覆盖文件的所有更改,而ctag仅覆盖内容更改。因此,如果您在
    if Match
    标题中提供了etag,并且有人重命名了该文件,那么您的请求将失败。另一方面,如果您提供了ctag,则只有在实际文件内容发生更改时才会失败


    现在,合并是一个完全不同的主题,不幸的是,对您来说,这是一个您需要编写的主题。OneDrive无法理解所有不同文件类型的语义,因此不知道什么是冲突更改,什么是非冲突更改。通过扩展,它也不知道如何为您合并无冲突的更改。如果您最终因服务更改而导致前置条件失败,则需要下载更新的文件并自己执行合并。

    在我的情况下,我将在下载后编辑文档。因此,上传时“值不会一直匹配”。这是否意味着,我将一直收到
    402错误
    ?如果没有,Graph Api将使用一种机制来跟踪更改,所以当您下载文档时,您需要在响应中记录ETag或CTag头。当您尝试将更新后的文档推回到OneDrive时,您会提供这些内容。只要没有其他人修改过文档,您提供的ETag/CTag就应该与OneDrive中的当前状态匹配,请求应该成功。如果同时发生两个具有相同ETag的同步更新请求,会发生什么情况?一个将成功,另一个将失败。没有办法预测哪个会是哪个。