通过Azure DevOps API关联工作项与Wiki页面后,Wiki未显示关联
工作项与Wiki页面双向关联的API实现问题
问题描述
在Azure DevOps GUI中关联工作项与Wiki页面时,可实现双向关联:Wiki页面会显示对应的工作项链接,工作项的“Links”列表中也会出现名为“Wiki Page”的链接,双方可互相访问。
由于需自动创建Wiki页面,尝试通过Azure DevOps API关联工作项与Wiki页面。目前已成功在工作项端关联Wiki页面,但Wiki页面上未显示对应的工作项关联。请问是否遗漏了操作步骤?是否需要在其他位置完成工作项与Wiki页面的关联?
关联代码如下:
$workItemUri = "$orgUrl/$ProjectName/_apis/wit/workitems/$WorkItemID?$apiVersion" $wikiRelationUrl = 'vstfs:///Wiki/WikiPage/' + $wikiPagePath $relationBody = ' [ { "op": "add", "path": "/relations/-", "value": { "rel": "ArtifactLink", "url": "'+ $wikiRelationUrl + '", "attributes": { "name": "Wiki Page" } } } ]' $wiResponse = Invoke-RestMethod -Uri $workItemUri -body $relationBody -Headers $headers -Method Patch -ContentType "application/json-patch+json" -ErrorAction SilentlyContinue if ($wiResponse.count -eq 0) { Write-Host "Relation to WorkItem added successfully." } else { Write-Host "Relation to WorkItem already exists." }
执行结果显示工作项已成功关联Wiki页面,但Wiki页面无任何关联显示。
解决方案
你目前只完成了单向关联(工作项→Wiki页面),要实现GUI中的双向关联效果,还需要在Wiki页面侧添加到工作项的反向关联,以下两种方式均可实现:
方式1:在Wiki页面内容中插入工作项引用
Azure DevOps会自动识别页面内容中的工作项格式(#工作项ID),并在页面右侧显示关联的工作项。创建或更新Wiki页面时,在内容中加入该引用即可:
# 替换{wikiId}为你的Wiki ID,可通过Wiki列表API查询获取 $wikiPageUri = "$orgUrl/$ProjectName/_apis/wiki/wikis/{wikiId}/pages?path=$wikiPagePath&apiVersion=7.1-preview.1" # 页面内容中包含工作项引用 $pageContent = @" # 你的Wiki页面标题 关联工作项:#$WorkItemID "@ $wikiBody = @{ content = $pageContent } | ConvertTo-Json Invoke-RestMethod -Uri $wikiPageUri -Body $wikiBody -Headers $headers -Method Put -ContentType "application/json"
方式2:通过API给Wiki页面添加ArtifactLink
直接调用Wiki页面的关联API,添加指向工作项的ArtifactLink,与工作项侧的关联逻辑对应:
# 替换{wikiId}和{pageId}为实际的Wiki ID和页面ID $wikiRelationUri = "$orgUrl/$ProjectName/_apis/wiki/wikis/{wikiId}/pages/{pageId}/relations?api-version=7.1-preview.1" $workItemArtifactUrl = "vstfs:///WorkItemTracking/WorkItem/$WorkItemID" $relationBody = @( @{ op = "add" path = "/relations/-" value = @{ rel = "ArtifactLink" url = $workItemArtifactUrl attributes = @{ name = "Work Item" } } } ) | ConvertTo-Json Invoke-RestMethod -Uri $wikiRelationUri -Body $relationBody -Headers $headers -Method Patch -ContentType "application/json-patch+json"
注意:Wiki ID和页面ID可通过调用
GET https://dev.azure.com/{org}/{proj}/_apis/wiki/wikis和GET https://dev.azure.com/{org}/{proj}/_apis/wiki/wikis/{wikiId}/pages?path=$wikiPagePath接口查询获取。
内容的提问来源于stack exchange,提问作者Mehdi
相关产品推荐
相关产品推荐

