我需要对google驱动器上的文件进行原子更新..即,如果自上次下载文件后该文件没有更改,则更新应该会成功。
我在更新请求中使用If-Match:标头
我遇到的问题是我使用以下端点下载文件:
https://www.googleapis.com/drive/v2/files/${fileId}?alt=media
响应包含正文中文件的内容,并在响应头中返回一个etag,如下所示:
etag:""hcahzZRGAO5dFBAGGfvDlnfbXEY/LTExOTA5OTEyOTk""
然而,如果我只是查询文件元数据,这个etag不等于我得到的etag ..使用
https://www.googleapis.com/drive/v2/files/${fileId}
毫不奇怪,如果我尝试使用下载过程中收到的If-Match: <etag>
对文件进行更新,则更新失败并显示错误&#39;前置条件失败&#39;
显然不是理想情况下执行http请求从文件元数据中获取etag,然后使用该etag进行更新,因为其他一些进程可能同时更改了文件。
如何获取文件的etag以及文件本身的下载?