She*_*ims 5 git postman azure-devops azure-devops-rest-api
我正在尝试使用 Azure DevOps REST API 来计算我们存储库中拉取请求的总数,并最终使用它来希望从 git 数据中获得一些更有用的信息。
我曾尝试使用对存储库的 GET 请求返回拉取请求列表,但 Azure API 将每个请求的响应限制为 101。您可以使用 $top 和 $skip 来更改返回的响应数量和数量,并使用 $count 来计算返回的响应。然而,这仍然将结果限制在绝对最大值 1,000 并返回包含在 PR 中的整个数据集,当我真的只需要知道其中的实例数时,我不需要它的数据完全返回,因为这会在大型 repos 上产生巨大的结果。
这是我正在使用的 GET 请求:
https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repository}/pullrequests?$top=999&$count=true&searchCriteria.status=all&api-version=5.0
Run Code Online (Sandbox Code Playgroud)
这是我使用 Postman 返回项目数的测试脚本
var body = JSON.parse(responseBody);
tests[body.value.length + " Pull Requests in this Repository" ] = true;
Run Code Online (Sandbox Code Playgroud)
这将返回 101 的响应计数,正如预期但不期望的那样。非常感谢任何提示和技巧!
powershell的简单示例代码:
function GetPullRequest{
param(
[string]$org,
[string]$project,
[string]$repo,
[string]$token
)
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f "test",$token)))
$count=0
$i=0
do{
$uri="https://dev.azure.com/$org/$project/_apis/git/repositories/$repo/pullRequests?api-version=5.0&`$top=100&`$skip=$i"
$i+=100
Write-Output $uri
$result= Invoke-RestMethod -Method Get -Uri $Uri -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Body $bodyJson
Write-Output $result.Count
$count+=$result.Count
if($result.Count-lt 100){
break;
}
}while($true)
write-output "Finish. Total Pull Request count: $count";
}
GetPullRequest -org "your organization" -project "your teamproject" -repo "your repository" -token "your personal access token"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3220 次 |
| 最近记录: |