使用Rest API从Azure Devops存储库获取文件

时间:2020-06-19 06:45:53

标签: azure azure-devops

我正在尝试使用以下代码从AzureDevops存储库中获取特定文件:

public static async void GetFile()
        {
            try
            {
                var personalaccesstoken = "XXXXXXXXX";

                using (HttpClient client = new HttpClient())
                {
                    client.DefaultRequestHeaders.Accept.Add(
                        new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

                    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
                        Convert.ToBase64String(
                            System.Text.ASCIIEncoding.ASCII.GetBytes(
                                string.Format("{0}:{1}", "", personalaccesstoken))));

                    using (HttpResponseMessage response = client.GetAsync(
                                "https://dev.azure.com/MS-ADM/SAPBuild/_apis/git/repositories/SAPBuild/items?path=/TestResult&download=true&api-version=5.0").Result)
                    {
                        response.EnsureSuccessStatusCode();
                        string responseBody = await response.Content.ReadAsStringAsync();
                        Console.WriteLine(responseBody);
                        Console.ReadLine();
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }

但是我要返回以下json:

{
    "objectId": "08205d1ecfa86e4d8a2451fa189e68711398f126",
    "gitObjectType": "tree",
    "commitId": "xxxxxxxxxxxxxxxx",
    "path": "/TestResult",
    "isFolder": true,
    "url": "https://dev.azure.com/MS-ADM/xxxxxxxxxx/_apis/git/repositories/768454e2-4250-4d83-821b-7ac1c2707f5d/items?path=%2FTestResult&versionType=Branch&versionOptions=None",
    "_links": {
        "self": {
            "href": "https://dev.azure.com/MS-ADM/xxxxxxxx/_apis/git/repositories/768454e2-4250-4d83-821b-7ac1c2707f5d/items?path=%2FTestResult&versionType=Branch&versionOptions=None"
        },
        "repository": {
            "href": "https://dev.azure.com/MS-ADM/xxxxxxxxx/_apis/git/repositories/768454e2-4250-4d83-821b-7ac1c2707f5d"
        },
        "tree": {
            "href": "https://dev.azure.com/MS-ADM/xxxxxxx/_apis/git/repositories/768454e2-4250-4d83-821b-7ac1c2707f5d/trees/08205d1ecfa86e4d8a2451fa189e68711398f126"
        }
    }
}

要在TestResult文件夹中获取文件,我应该在URL中写些什么?

1 个答案:

答案 0 :(得分:1)

您正在使用的API "https://dev.azure.com/MS-ADM/SAPBuild/_apis/git/repositories/SAPBuild/items?path=/TestResult&download=true&api-version=5.0

您应该指定特定的文件路径,而不要使用文件夹路径,例如path=path=%2FTestResult/**Home.cshtml**

如您所见,使用文件夹路径,返回json也显示"isFolder": true,

更多详细信息和powershell示例,请参考以下示例: