0

我们在 Azure DevOps 中有一个简单的查询,它查找某个迭代路径中的所有工作项,当在 Web GUI 中运行时,返回 System.Id、System.WorkItemType、System.Title、System.AssignedTo、System.Tags 和系统.父。通过使用这种形式的 API 调用:

https://dev.azure.com/ //_apis/wit/wiql/<query_id>

我可以获得查询返回的列列表以及每个工作项的链接。链接不包含列中的信息。据推测,我应该获取每个工作项链接并形成一个 WIQL 查询,该查询将返回我想要的信息。通常不是问题(除了我不熟悉 WIQL),但我们将这些信息提取到 Azure 数据工厂,以提交到 SQL 数据库并与来自其他来源的工作信息相关联。ADF 可以从 Rest API 提取到数据库(我已经看到,但仍在学习...),但似乎最好(或者可能只有可能)使用单个查询来执行此操作,而不是基于初始查询结果的一组查询。

所以,我的问题是:对于 Azure DevOps,是否有一个 API 调用将针对每个工作项返回与查询关联的工作项信息?也就是说,我想要一个实际上而不是告诉我每个工作项的 Id、WorkItemType 等的查询,而不是一个必须提供给另一个查询以获取我们想要的信息的可循环列表。

4

1 回答 1

1

恐怕只有一个rest api无法返回查询中的工作项信息。

通过一个rest api你可以获取查询设置(工作项字段)和工作项id,你需要结合另一个API来获取工作项信息。

这是我的 PowerShell 示例:

$token = "PAT"

$url=" https://dev.azure.com/{OrganizationName}/{ProjectName}/{Team}/_apis/wit/wiql/{QueryId}?api-version=5.1"

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



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



$IDS = $response.workItems.id  -join ',' 
$Fieldnames = $response.columns.referenceName -join ',' 



echo $IDs
echo $Fieldnames


$url1="https://dev.azure.com/{OrganizationName}/_apis/wit/workitems?ids=$IDs&fields=$Fieldnames&api-version=6.0"

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


echo $($response2 | ConvertTo-Json -Depth 100)

解释:

First Rest API:Wiql - Get用于获取查询设置和 IDS。我们可以从响应中获取 id 和字段并形成一个字符串。

第二个 Rest API:Work Items - List用于获取工作项信息,您可以在 URL 中添加字段和 id,然后您可以获取具有目标字段的工作项。

结果:

在此处输入图像描述

于 2020-11-05T02:39:03.397 回答