You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Azure DevOps REST API获取构建制品中指定文件内容?

解决Azure DevOps获取制品内特定文件内容的问题

我明白你现在的困扰——已经拿到了构建制品压缩包的URL,但想直接获取里面的bundlesizes.json内容,却卡在了fileId这个参数上。下面我给你两种可行的解决方案:

方案一:直接通过文件路径获取内容(更简单)

其实你不需要纠结fileId,Azure DevOps提供了直接通过文件相对路径获取内容的API,步骤如下:

  • 使用这个API格式:
    GET https://dev.azure.com/{organization}/{project}/_apis/build/builds/{buildId}/artifacts/{artifactName}/content/{filePath}?api-version=5.0
    
  • 替换你的参数后,请求地址应该是:
    GET https://dev.azure.com/uifabric/fabricpublic/_apis/build/builds/8838/artifacts/drop/content/bundlesizes.json?api-version=5.0
    

直接发送这个请求,就能拿到bundlesizes.json的内容了,是不是比找fileId方便很多?

方案二:先获取fileId再调用Get File API

如果你一定要用你最初尝试的Get File API,那需要先获取目标文件的fileId:

  1. 获取制品的文件结构列表
    调用这个API来获取drop制品下所有文件的详细信息:
    GET https://dev.azure.com/uifabric/fabricpublic/_apis/build/builds/8838/artifacts/drop/items?path=/&recursionLevel=Full&api-version=5.0
    
    这个请求会返回一个包含所有文件和文件夹的列表,每个条目里会有id(就是你需要的fileId)、name、path等属性。
  2. 找到目标文件的fileId
    在返回的列表中,找到name为bundlesizes.json的条目,提取它的id值。
  3. 调用Get File API
    把获取到的fileId填入你之前的请求中,比如假设fileId是12345,请求地址就是:
    GET https://dev.azure.com/uifabric/fabricpublic/_apis/build/builds/8838/artifacts?artifactName=drop&fileId=12345&fileName=bundlesizes.json&api-version=5.0
    
    这样就能成功获取文件内容了。

为什么你之前的请求报错?

你之前把bundlesizes.json直接作为fileId传入,这是错误的——fileId是Azure DevOps内部为每个文件分配的唯一标识符,不是文件名,必须通过获取文件结构的API才能拿到。

内容的提问来源于stack exchange,提问作者tubby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:17:59