Azure devops rest api 如何通过AzureDevOpsRESTAPI仅获取最新版本的软件包

Azure devops rest api 如何通过AzureDevOpsRESTAPI仅获取最新版本的软件包,azure-devops-rest-api,azure-artifacts,Azure Devops Rest Api,Azure Artifacts,下面的API返回特定包的所有版本。为了获得该包的最新版本,我可以使用返回响应中的isLatest:true数据 但我想知道是否有办法在回复中只获取最新版本而不是所有版本?可能吗 如果不可能的话,那么第二个问题——最新版本是否始终是回答中的第一项?(我假设退货数量有限制(1000?)因此,我想知道如果我需要获取最新版本,一个API调用是否总是足够的。对于第一个问题,恐怕没有现成的参数直接通过rest API返回包的最新版本,因为rest API url中没有提供isLatest参数来返回la测试

下面的API返回特定包的所有版本。为了获得该包的最新版本,我可以使用返回响应中的isLatest:true数据

但我想知道是否有办法在回复中只获取最新版本而不是所有版本?可能吗


如果不可能的话,那么第二个问题——最新版本是否始终是回答中的第一项?(我假设退货数量有限制(1000?)因此,我想知道如果我需要获取最新版本,一个API调用是否总是足够的。

对于第一个问题,恐怕没有现成的参数直接通过rest API返回包的最新版本,因为rest API url中没有提供
isLatest
参数来返回la测试版本。此外,url参数中未提供
$top
参数来指定返回的计数

最新版本是否始终是响应中的第一项

对于第二个问题,答案是是,最新版本将始终是回答中的第一项

因此,作为解决方法,我们可以简单地通过powershell脚本过滤响应,以返回最新的包版本

$url = 'https://feeds.dev.azure.com/{org}/_apis/packaging/Feeds/{feedId}/Packages/{packageId}/versions?api-version=6.0-preview.1';

$token = "{PAT}"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))

$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Get 

$result = $response.value | Where {$_.isLatest -eq "true"} #|

Write-Host "results = $($result | ConvertTo-Json -Depth 100)"

如果不可能的话,那么第二个问题——最新版本是否始终是回答中的第一项

答案是肯定的。最新版本始终是响应中的第一项

作为测试,我向我的提要发布了一个版本为
1.0.0
2.0.0
的测试包,然后发布了版本
1.0.1-preview1.2
1.0.1
。但是Azure devops将按照包版本的顺序进行排序:

$connectionToken="Your PAT"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))

$url = 'GET https://feeds.dev.azure.com/{organization}/{project}/_apis/packaging/Feeds/{feedId}/Packages/{packageId}/versions?api-version=6.0-preview.1
'
$PackageInfo = (Invoke-RestMethod -Uri $url -Method Get -UseDefaultCredential -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}) 

$LatestVersion= $PackageInfo.value.version | Select-Object -first 1


Write-Host "Latest package Version = $LatestVersion"

因此,我们可以将REST API与powershell参数一起使用
Select Object-first 1
,以获得最新的软件包版本:

$connectionToken="Your PAT"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))

$url = 'GET https://feeds.dev.azure.com/{organization}/{project}/_apis/packaging/Feeds/{feedId}/Packages/{packageId}/versions?api-version=6.0-preview.1
'
$PackageInfo = (Invoke-RestMethod -Uri $url -Method Get -UseDefaultCredential -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}) 

$LatestVersion= $PackageInfo.value.version | Select-Object -first 1


Write-Host "Latest package Version = $LatestVersion"
测试结果: