powershell - 如何在获取构建列表 VSTS REST API 中应用过滤器?
问题描述
我正在尝试使用此处编写的 power shell 从 VSTS 获取构建列表https://docs.microsoft.com/en-us/rest/api/vsts/build/builds/list?view=vsts-rest-4.1 我的uri是:
https://tfs.*****.com/STS/FORIS_Mobile/_apis/build/builds?api-version=4.1&definitions=6331&statusFilter=completed&resultFilter=succeeded&tagFilters='Rejected'&maxBuildsPerDefinition=1&queryOrder=finishTimeDescending
我发送这样的请求:
$buildsOverview = Invoke-WebRequest -UseDefaultCredentials -Uri $buildsUrl | ConvertFrom-Json
我的结果没有过滤器definitions=6331
和tagFilters='Rejected'
.
我对这个请求做错了什么?
UPD 这是 $buildsUrl 的构建方式:
$buildsUrlBase = "$tfsConnectString/$teamProjectName/_apis/build/builds?api-version=4.1"
$buildsUrlBase = "$buildsUrlBase&definitions=" + $definitionIds.ToString() + "&statusFilter=completed&resultFilter=succeeded&maxBuildsPerDefinition=$BuildsPerDef&queryOrder=finishTimeDescending"
if ([string]::IsNullOrEmpty($buildQuality) -ne $true)
{
$buildsUrlBase = "$buildsUrlBase&tagFilters='$buildQuality'"
}
$buildsUrlBase = [System.Uri]::EscapeUriString($buildsUrlBase)
带有我的构建定义 ID 的实际字符串在问题中。
我也尝试过使用 Invoke-RestMethod:
$buildsOverview = Invoke-RestMethod -Uri $buildsUrl -Method Get -ContentType "application/json-patch+json" -UseDefaultCredential
但结果相同
解决方案
根据您的意见,解决方案如下:
- 使用 2.0 版本的 API
- 不要在标签周围使用引号
网址:https://tfs.*****.com/STS/FORIS_Mobile/_apis/build/builds?api-version=2.0&statusFilter=completed&tagFilters=Rejected&definitions=6331&resultFilter=succeeded&maxBuildsPerDefinition=1&queryOrder=finishTimeDescending
以及生成它的代码:
$buildsUrlBase = "$tfsConnectString/$teamProjectName/_apis/build/builds?api-version=2.0"
$buildsUrlBase = "$buildsUrlBase&definitions=" + $definitionIds.ToString() + "&statusFilter=completed&resultFilter=succeeded&maxBuildsPerDefinition=$BuildsPerDef&queryOrder=finishTimeDescending"
if ([string]::IsNullOrEmpty($buildQuality) -ne $true)
{
$buildsUrlBase = "$buildsUrlBase&tagFilters=$buildQuality"
}
$buildsUrlBase = [System.Uri]::EscapeUriString($buildsUrlBase)
推荐阅读
- python - 在python中将数据插入oracle数据库
- apache-kafka - JMX 导出器和 Prometheus
- laravel - 如何从 laravel 中的相关表中获取数据
- control-m - 如果执行时间少于 2 分钟,则终止作业
- python - 具有高级字符的非贪婪模式
- javascript - Firefox 在 iframe 中附加时删除 Web 组件属性
- spring-boot - Jhipster 后端部署到 AWS Beanstalk API 调用失败
- php - 通过按元素分组并按另一个过滤来复制 CSV 文件
- javascript - 在 Vue.js 中使用 @mouseover='' 时,我可以将悬停的元素作为参数传递给我的函数吗?
- javascript - 如何使用 PHP 或 Javascript 从我的本地主机下载文件