Compartilhar via


Exemplos de API REST para o Azure DevOps

Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019

A maioria dos exemplos neste artigo usa PATs (tokens de acesso pessoal). Embora os PATs sejam um exemplo compacto de autenticação, não recomendamos usá-los para aplicativos de produção. Há muitos outros mecanismos de autenticação disponíveis, incluindo a Biblioteca de Autenticação da Microsoft, o OAuth e os tokens de sessão. Para obter mais informações para medir o que é mais adequado para seu cenário, consulte as diretrizes de autenticação.

Para obter mais informações, consulte a Referência da API REST do Azure DevOps e introdução às APIs REST.

Autenticação

Autentique com o Azure DevOps ao usar as APIs REST ou bibliotecas do .NET seguindo estas etapas:

  • Criar um PAT:
    Comece com esses exemplos e crie um PAT (token de acesso pessoal).

    Importante

    Recomendamos os tokens mais seguros do Microsoft Entra em vez de tokens de acesso pessoal de maior risco. Saiba mais sobre nossos esforços para reduzir o uso do PAT. Examine nossas diretrizes de autenticação para escolher o mecanismo de autenticação correto para suas necessidades.

  • Use a Autenticação Básica com um PAT:

    1. Converta seu PAT em uma cadeia de caracteres codificada em Base64 no formato username:PAT (o nome de usuário pode estar vazio).
    2. Adicione a cadeia de caracteres codificada ao Authorization cabeçalho HTTP.

    Exemplo usando a Autenticação Básica com curl:

    curl -u :{yourPAT} https://dev.azure.com/{organization}/_apis/projects?api-version=7.2-preview.1
    

Exemplos de solicitação de GET

As seguintes solicitações C# e curl retornam uma resposta JSON contendo a lista de todos os projetos em uma organização especificada:

using System.Net.Http;
using System.Net.Http.Headers;

...

//encode your personal access token                   
string credentials = Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", "", personalAccessToken)));

ListOfProjectsResponse.Projects viewModel = null;

//use the httpclient
using (var client = new HttpClient())
{
    client.BaseAddress = new Uri($"https://dev.azure.com/{OrgName}/");  //url of your organization
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", credentials); 

    //connect to the REST endpoint            
    HttpResponseMessage response = client.GetAsync("_apis/projects?stateFilter=All&api-version=1.0").Result;
          
    //check to see if we have a successful response
    if (response.IsSuccessStatusCode)
    {
        //set the viewmodel from the content in the response
        viewModel = response.Content.ReadAsAsync<ListOfProjectsResponse.Projects>().Result;
                
        //var value = response.Content.ReadAsStringAsync().Result;
    }   
}
-u username:PAT https://dev.azure.com/{organization}/_apis/projects?api-version=6.0

Exemplo de solicitação POST

A solicitação curl a seguir cria um novo item de trabalho do tipo "Tarefa" em um projeto especificado:

-u username:PAT -X POST -H "Content-Type: application/json" \
-d '{"fields": {"System.Title": "New Work Item"}}' \
https://dev.azure.com/{organization}/{project}/_apis/wit/workitems/$Task?api-version=6.0

Exemplo de solicitação de PUT

A solicitação curl a seguir atualiza um item de trabalho existente alterando seu estado para "Em andamento":

 -u username:PAT -X PATCH -H "Content-Type: application/json-patch+json" \
-d '[{"op": "add", "path": "/fields/System.State", "value": "In Progress"}]' \
https://dev.azure.com/{organization}/{project}/_apis/wit/workitems/{id}?api-version=6.0

Exemplo de solicitação de DELETE

A solicitação curl a seguir exclui um item de trabalho existente de um projeto especificado:

-u username:PAT -X DELETE \
https://dev.azure.com/{organization}/{project}/_apis/wit/workitems/{id}?api-version=6.0

Bibliotecas de clientes do .NET

Aqui, estamos usando duas das Bibliotecas de Clientes do .NET. Certifique-se de fazer referência às seguintes Bibliotecas de Clientes do .NET em seu projeto .NET.

O exemplo a seguir obtém uma lista de projetos para sua organização por meio de Bibliotecas de Clientes do .NET:

using Microsoft.TeamFoundation.Core.WebApi;
using Microsoft.VisualStudio.Services.Common;

...

//create uri and VssBasicCredential variables
Uri uri = new Uri(url);
VssBasicCredential credentials = new VssBasicCredential("", personalAccessToken);

using (ProjectHttpClient projectHttpClient = new ProjectHttpClient(uri, credentials))
{
    IEnumerable<TeamProjectReference> projects = projectHttpClient.GetProjects().Result;                    
}

Perguntas frequentes

P: Onde posso obter o código-fonte para os exemplos de código?

R: Consulte o https://github.com/Microsoft/vsts-restapi-samplecode.

P: Onde posso encontrar mais informações sobre a biblioteca .NET?

R: Confira a visão geral das bibliotecas de clientes.