【发布时间】:2019-12-03 02:04:26
【问题描述】:
我正在尝试使用 Azure DevOps REST API 来计算我们存储库中拉取请求的总数,并最终使用它来希望从 git 数据中获得一些更有用的信息。
我尝试使用对存储库的 GET 请求来返回拉取请求列表,但 Azure API 将响应限制为每个请求 101 个。您可以使用 $top 和 $skip 来更改返回的响应数量和响应,并使用 $count 来计算返回的响应。然而,这仍然将结果限制为 1,000 的绝对最大值并返回 PR 中包含的整个数据集,当我真的只需要知道其中的实例数时,我不需要它的数据完全返回,因为这会在大型回购中产生巨大的结果。
这是我正在使用的 GET 请求:
https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repository}/pullrequests?$top=999&$count=true&searchCriteria.status=all&api-version=5.0
这是我用来返回项目计数的测试脚本,使用 Postman
var body = JSON.parse(responseBody);
tests[body.value.length + " Pull Requests in this Repository" ] = true;
这会返回 101 的响应计数,正如预期但不希望的那样。非常感谢任何提示和技巧!
【问题讨论】:
-
每个“页面”是否只限制 101 个结果?如,如果返回对象中存在 101 个结果的“下一页”,是否没有链接可以获取它们?
-
一种解决方法可能是一个 powershell 脚本,它通过
$top = 100、$skip=0检查从 1 到 100 的范围,然后通过$top = 100、$skip=100等检查从 101 到 200 的范围......如果你这样做直到你得到一个小于 100 的响应,你知道你已经到了最后,可以工作还是? -
@MarTin 您能否提供一个 powershell 脚本来执行此操作?我通过一个接一个地发送请求来实现这个概念,同时使用 $top=1000 代替它,它工作得很好,谢谢你。我的 powershell 经验很少,所以我不知道如何自动化它而不是手动发送请求,直到我看到响应
-
@Shepsims 我认为starian chen-MSFT 用他的回答解决了你的问题,对吗? :-)
-
是的,成功了,谢谢你们的帮助!
标签: git azure-devops postman azure-devops-rest-api