首页 > 解决方案 > 能否使用 DevOps 工件查询检索 Azure DevOps Wiki?

问题描述

我一直在尝试检索链接到工作项的 Wiki URL,并且我已经能够检索到工作项和 Wiki 页面之间的链接。但是,链接返回是 VSTFS 工件链接。是否可以使用REST 文档的此页面上提供的查询来检索真实的 URL ,或者这仅适用于检索工作项?我目前在尝试使用类似于下面的 TFS 链接时收到 TF400898 错误。

vstfs:///Wiki/WikiPage/{vstfs identification string}

编辑:当前功能

def getWikiURL(azureToken, parsedTFS):
  # parsedTFS[0] == Project ID, parsedTFS[1] == Wiki Repo ID, parsedTFS[2] == [page1, page2, page3]

   reqURL = "https://dev.azure.com/{Organization}/" + str(parsedTFS[0]) + "/_apis/_wiki/wikis/" + str(parsedTFS[1]) + "/pages/"

for pageDef in parsedTFS[2]:
  reqURL = reqURL + "/" + pageDef

authorization = str(b64.b64encode(bytes(':'+azureToken, 'ascii')), 'ascii)

headers = {
   'Accept': 'application/json',
   'Authorization' : 'Basic '+authorization
}

r = requests.get(url=reqURL, headers=headers)

strR = r.content.decode("utf-8-sig")
print(strR)

print(strR) 将 b'' 写入控制台

标签: azurerestazure-devops

解决方案


以下是我的维基结构。 在此处输入图像描述 要获取访问 wiki3 页面的 url 并使用您的函数,下面的脚本应该按预期工作。请运行命令:$ pip install requests如果您尚未安装该requests库。

import base64 as b64
import requests
def getWikiURL(azureToken, parsedTFS):
    #azureToken == PAT, parsedTFS[0] == Project ID, parsedTFS[1] == Wiki Repo ID, parsedTFS[2] == ["wiki1","wiki2","wiki3"]

    reqURL = "https://dev.azure.com/{Organization}/" + str(parsedTFS[0]) + "/_apis/wiki/wikis/" + str(parsedTFS[1]) + "/pages/"

    for pageDef in parsedTFS[2]:
        reqURL = reqURL + "/" + pageDef
    authorization = str(b64.b64encode(bytes(':'+azureToken, 'ascii')), 'ascii')

    headers = {
        'Accept': 'application/json',
        'Authorization' : 'Basic '+authorization
    }

    r = requests.get(url=reqURL, headers=headers)
    strR = r.content.decode("utf-8-sig")
    print(strR)

getWikiURL("azureToken",["Project ID", "Wiki Repo ID", ["wiki1","wiki2","wiki3"]])


推荐阅读