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

如何通过Azure DevOps Feed REST API获取超1000个包及版本?

Azure DevOps NuGet包全量获取与下载方案

一、突破1000条返回限制的分页策略

虽然API 7.1版本未返回续传令牌,但可通过$skip参数实现分页查询,逐步拉取所有包数据:

  • 初始请求设置$skip=0,每次最多返回1000条结果
  • 每次请求成功后,将$skip值累加当前返回的包数量,发起下一次请求
  • 当返回的value数组为空时,停止循环

Python分页查询示例

import requests

ADO_ORG = "你的组织名"
ADO_FEED = "你的Feed名"
PAT = "你的个人访问令牌(需有Packaging Read权限)"
API_VERSION = "7.1-preview.1"

headers = {
    "Authorization": f"Basic {PAT}"
}

all_packages = []
skip = 0

while True:
    url = f"https://feeds.dev.azure.com/{ADO_ORG}/_apis/packaging/Feeds/{ADO_FEED}/packages?$skip={skip}&api-version={API_VERSION}"
    response = requests.get(url, headers=headers)
    response.raise_for_status()
    data = response.json()
    current_pkgs = data.get("value", [])
    
    if not current_pkgs:
        break
    
    all_packages.extend(current_pkgs)
    skip += len(current_pkgs)
    print(f"已获取{len(all_packages)}个包")

print(f"全量包获取完成,共{len(all_packages)}个")

二、批量下载NuGet包

从获取的包详情中提取每个版本的downloadUrl,携带认证头直接发起下载请求:

  • 遍历每个包的versions数组,取出对应版本的下载链接
  • 按「包名+版本号」命名保存文件,避免重名
  • 下载时使用流式请求,避免大文件占用过多内存

Python批量下载示例

import os

save_dir = "nuget_packages"
os.makedirs(save_dir, exist_ok=True)

for pkg in all_packages:
    pkg_name = pkg["name"]
    for version in pkg["versions"]:
        version_num = version["version"]
        download_url = version["downloadUrl"]
        save_path = os.path.join(save_dir, f"{pkg_name}.{version_num}.nupkg")
        
        if os.path.exists(save_path):
            print(f"已存在,跳过:{save_path}")
            continue
            
        with requests.get(download_url, headers=headers, stream=True) as r:
            r.raise_for_status()
            with open(save_path, "wb") as f:
                for chunk in r.iter_content(chunk_size=8192):
                    f.write(chunk)
        print(f"下载完成:{save_path}")

三、关键注意事项

  • PAT权限:确保个人访问令牌拥有Packaging (Read)权限,否则会返回403权限错误
  • 限流处理:短时间内大量请求可能触发限流,可添加time.sleep(0.5)之类的延迟
  • 异常重试:建议为请求添加重试逻辑,处理网络波动或API临时不可用的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 16:28:15