如何通过Azure DevOps REST API删除工作项附件?有无替代方案?
删除Azure DevOps工作项附件的可行方案
官方支持的替代方式:通过工作项更新API移除附件
Azure DevOps暂未提供直接删除工作项附件的REST API,但可通过工作项更新API间接实现,核心逻辑是修改工作项的System.AttachedFiles字段,移除目标附件的引用:
获取工作项当前附件列表
调用工作项详情API,提取System.AttachedFiles字段内容,该字段存储所有附件的ID与名称,格式示例:[ { "id": 123, "name": "document.pdf" }, { "id": 456, "name": "screenshot.png" } ]构造更新请求体
删除目标附件的条目后,构造JSON Patch格式的请求体,使用replace操作更新System.AttachedFiles字段:[ { "op": "replace", "path": "/fields/System.AttachedFiles", "value": [ { "id": 123, "name": "document.pdf" } ] } ]发送更新请求
以PATCH方法调用工作项更新API,路径格式如下:https://dev.azure.com/{organization}/{project}/_apis/wit/workitems/{workItemId}?api-version=7.0请求头需包含
Content-Type: application/json-patch+json,并附带有效的身份验证令牌。执行后,Azure DevOps会自动清理后台存储的对应附件文件。
未公开的内部API(不推荐生产环境使用)
通过抓包Azure DevOps网页端操作,可发现一个内部DELETE API可直接删除附件,路径格式大致为:
https://dev.azure.com/{organization}/{project}/_apis/wit/attachments/{attachmentId}?api-version=7.0
但该API未得到官方正式支持,存在随时变更或被禁用的风险,稳定性无保障,不建议用于生产系统。
注意事项
- 操作前建议备份工作项数据,避免误删重要内容;
- 官方更新API的方式是合规且长期稳定的优先选择。
内容的提问来源于stack exchange,提问作者InfiniteLoop
相关产品推荐
相关产品推荐

