使用Microsoft Graph API创建OneDrive文档版本时遇400错误求助
问题分析与解决方案
操作错误点
你调用的POST /v1.0/drives/{drive-id}/items/{item-id}/versions端点并非用于创建文件新版本,这个API的作用是恢复现有版本或处理草稿版本提交,并不接受你传入的content.sourceUrl格式请求体,这是导致400错误的核心原因。
正确创建OneDrive文件版本的方法
OneDrive的版本历史基于文件内容变更自动生成,只要替换文件内容,系统就会自动创建新版本(前提是目标文件所在的库/文件夹已开启版本历史功能,个人OneDrive默认开启,商业版需确认管理员设置)。正确的API调用方式如下:
方式1:直接上传新内容(小文件)
使用PUT请求替换文件内容,触发新版本创建:
curl -X PUT 'https://graph.microsoft.com/v1.0/drives/{drive-id}/items/{item-id}/content' \ -H 'Authorization: Bearer {access-token}' \ -H 'Content-Type: text/plain' \ --data 'Hello World Updated!'
方式2:通过外部URL导入内容创建版本
如果内容存储在其他可访问的URL,可使用PUT请求并指定@microsoft.graph.sourceUrl参数:
curl -X PUT 'https://graph.microsoft.com/v1.0/drives/{drive-id}/items/{item-id}/content' \ -H 'Authorization: Bearer {access-token}' \ -H 'Content-Type: application/json' \ --data '{ "@microsoft.graph.sourceUrl": "https://example.com/updated-file.txt" }'
方式3:分块上传(大文件)
若文件超过4MB,建议使用分块上传流程,完成后同样会生成新版本:
- 创建上传会话:
POST /drives/{drive-id}/items/{item-id}/createUploadSession - 分块上传文件内容
- 完成上传会话
额外说明
- 若需确认版本是否创建成功,可调用
GET /v1.0/drives/{drive-id}/items/{item-id}/versions获取版本列表,检查最新版本条目。 - 商业版OneDrive可通过库设置调整版本保留策略,确保版本历史功能正常启用。
内容的提问来源于stack exchange,提问作者Abhishek Dheeman
相关产品推荐
相关产品推荐

