如何使用REST API

时间:2018-06-11 19:18:35

标签: tfs azure-devops tfsbuild tfs-sdk azure-devops-rest-api

全部, 我试图使用REST API获取TFS GIT中特定仓库中所有文件的列表。 我找到了下面的一个,但它只显示" scopePath = / buld.xml"之后提到的特定文件名的内容,它只显示文件build.xml的内容。

但我正在尝试,只是列出特定存储库中的所有文件而不提及特定的文件名。

请帮帮我。

的https:// {帐户名} .visualstudio.com / {项目} / _apis / GIT中/库/ {repositoryId} /items?items?scopePath=/&api-version=4.1

3 个答案:

答案 0 :(得分:5)

您可以使用以下api:

https://{accountName}.visualstudio.com/{project}/_apis/git/repositories/{repositoryId}/items?recursionLevel=Full&api-version=4.1

enter image description here

答案 1 :(得分:1)

还可以使用VisualStudioOnline库(在撰写本文时成为AzureDevOps)来实现:Microsoft.TeamFoundationServer.Client,Microsoft.VisualStudio.Services.Client。

首先,您需要创建access token。然后只需使用以下代码:

VssBasicCredential credintials = new VssBasicCredential(String.Empty, "YOUR SECRET CODE HERE");
VssConnection connection = new VssConnection(new Uri("https://yourserverurl.visualstudio.com/"), credintials);
GitHttpClient client = connection.GetClient<GitHttpClient>();

List<GitRepository> repositories = await client.GetRepositoriesAsync(true); // or use GetRepositoryAsync()
var repo = repositories.FirstOrDefault(r => r.Name == "Some.Repo.Name");

GitVersionDescriptor descriptor = new GitVersionDescriptor()
{
    VersionType = GitVersionType.Branch,
    Version = "develop",
    VersionOptions = GitVersionOptions.None
};

List<GitItem> items = await client.GetItemsAsync(repo.Id, scopePath: "/", recursionLevel: VersionControlRecursionType.Full, versionDescriptor: descriptor);

内部使用REST API。因此,如果您使用c#lang尝试相同的效果,最好将其委托给lib。

答案 2 :(得分:0)

您需要先调用items端点,这会给您一个objectId(gitObjectType应该为“ tree”):

http://{tfsURL}/tfs/{collectionId}/{teamProjectId}/_apis/git/repositories/{repositoryId}/items?recursionLevel=Full&api-version=4.1

然后调用树的端点以列出树中的对象:

http://{tfsURL}/tfs/{collectionId}/{teamProjectId}/_apis/git/repositories/{repositoryId}/trees/{objectId}?api-version=4.1

测试