从单个 DevOps API 查询中提取完整的工作项信息
Pulling full work item information from a single DevOps API query
我们在 Azure DevOps 中有一个简单的查询,它在某个迭代路径中查找所有工作项,当在 Web GUI 中 运行 时,returns System.Id,System.WorkItemType、System.Title、System.AssignedTo、System.Tags 和 System.Parent。通过使用这种形式的 API 调用:
https://dev.azure.com///_apis/wit/wiql/
我可以获得查询编辑的列列表 return 和每个工作项的 links。 link 不包含列中的信息。据推测,我应该获取每个工作项 link 并形成一个 WIQL 查询,该查询将 return 我想要的信息。通常这不是问题(除了我不熟悉 WIQL),但我们正在将此信息拉入 Azure 数据工厂以提交到 SQL 数据库并与来自其他来源的工作信息相关联。 ADF 可以从 Rest API 拉取到数据库(我已经看到了,但仍在学习......),但似乎最好(或者可能唯一)用一个查询,而不是基于初始查询结果的一组查询。
所以,我的问题是:是否有单个 API 调用 Azure DevOps,对于每个工作项,return 与查询关联的工作项信息?也就是说,我想要一个实际上而不是告诉我每个工作项的 Id、WorkItemType 等的查询,而不是一个必须提供给另一个查询才能获得我们想要的信息的可循环列表。
恐怕只有一个休息api不能return查询中的工作项信息
通过休息api可以得到query settings(work item fields)和work item ids,需要结合另一个API才能得到work item信息
这是我的 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)
解释:
先休息API: Wiql - Get用于获取Query Settings和IDS。我们可以从响应中获取 id 和字段并形成一个字符串。
Second Rest API: Work Items - List用于获取工作项信息,可以在URL中添加字段和id,即可获取工作项目标字段。
结果:
我们在 Azure DevOps 中有一个简单的查询,它在某个迭代路径中查找所有工作项,当在 Web GUI 中 运行 时,returns System.Id,System.WorkItemType、System.Title、System.AssignedTo、System.Tags 和 System.Parent。通过使用这种形式的 API 调用:
https://dev.azure.com///_apis/wit/wiql/
我可以获得查询编辑的列列表 return 和每个工作项的 links。 link 不包含列中的信息。据推测,我应该获取每个工作项 link 并形成一个 WIQL 查询,该查询将 return 我想要的信息。通常这不是问题(除了我不熟悉 WIQL),但我们正在将此信息拉入 Azure 数据工厂以提交到 SQL 数据库并与来自其他来源的工作信息相关联。 ADF 可以从 Rest API 拉取到数据库(我已经看到了,但仍在学习......),但似乎最好(或者可能唯一)用一个查询,而不是基于初始查询结果的一组查询。
所以,我的问题是:是否有单个 API 调用 Azure DevOps,对于每个工作项,return 与查询关联的工作项信息?也就是说,我想要一个实际上而不是告诉我每个工作项的 Id、WorkItemType 等的查询,而不是一个必须提供给另一个查询才能获得我们想要的信息的可循环列表。
恐怕只有一个休息api不能return查询中的工作项信息
通过休息api可以得到query settings(work item fields)和work item ids,需要结合另一个API才能得到work item信息
这是我的 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)
解释:
先休息API: Wiql - Get用于获取Query Settings和IDS。我们可以从响应中获取 id 和字段并形成一个字符串。
Second Rest API: Work Items - List用于获取工作项信息,可以在URL中添加字段和id,即可获取工作项目标字段。
结果: