Compartir a través de


Ejemplos de API REST para Azure DevOps

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

La mayoría de los ejemplos de este artículo usan tokens de acceso personal (PAT). Aunque los PAT son un ejemplo compacto para la autenticación, no se recomienda usarlos para aplicaciones de producción. Hay muchos otros mecanismos de autenticación disponibles, como la Biblioteca de autenticación de Microsoft, OAuth y tokens de sesión. Para obtener más información para medir cuál es la más adecuada para su escenario, consulte Guía de autenticación.

Para más información, consulte Referencia de la API REST de Azure DevOps y Introducción a las API REST.

Autenticación

Autentíquese con Azure DevOps al usar las API REST o las bibliotecas de .NET siguiendo estos pasos:

  • Cree un PAT:
    Comience con estos ejemplos y cree un token de acceso personal (PAT).

    Importante

    Se recomiendan los tokens de Microsoft Entra más seguros sobre los tokens de acceso personal de mayor riesgo. Obtenga más información sobre nuestros esfuerzos para reducir el uso de PAT. Revise nuestra guía de autenticación para elegir el mecanismo de autenticación adecuado para sus necesidades.

  • Use la autenticación básica con un PAT:

    1. Convierta el PAT en una cadena codificada en Base64 en el formato username:PAT (el nombre de usuario puede estar vacío).
    2. Agregue la cadena codificada al Authorization encabezado HTTP.

    Ejemplo de uso de la autenticación básica con curl:

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

Ejemplos de solicitudes GET

Las siguientes solicitudes de C# y curl devuelven una respuesta JSON que contiene la lista de todos los proyectos de una organización 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

Ejemplo de solicitud POST

La siguiente solicitud curl crea un nuevo elemento de trabajo del tipo "Tarea" en un proyecto 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

Ejemplo de solicitud PUT

La siguiente solicitud curl actualiza un elemento de trabajo existente cambiando su estado a "En curso":

 -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

Ejemplo de solicitud DELETE

La siguiente solicitud curl elimina un elemento de trabajo existente de un proyecto especificado:

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

Bibliotecas de cliente de .NET

Aquí se usan dos de las bibliotecas cliente de .NET. Asegúrese de hacer referencia a las siguientes bibliotecas cliente de .NET en el proyecto de .NET.

En el ejemplo siguiente se obtiene una lista de proyectos de su organización a través de bibliotecas cliente de .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;                    
}

Preguntas más frecuentes

P: ¿Dónde puedo obtener el código fuente de los ejemplos de código?

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

P: ¿Dónde puedo encontrar más información sobre la biblioteca .NET?

R: Consulte la introducción a las bibliotecas cliente.