Udostępnij za pośrednictwem


Przykłady interfejsu API REST dla usługi Azure DevOps

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

Większość przykładów w tym artykule używa osobistych tokenów dostępu (PAT). Sieci PAT są kompaktowym przykładem uwierzytelniania, ale nie zalecamy używania ich w aplikacjach produkcyjnych. Dostępnych jest wiele innych mechanizmów uwierzytelniania, w tym biblioteki uwierzytelniania firmy Microsoft, protokołu OAuth i tokenów sesji. Aby uzyskać więcej informacji potrzebnych do oceny, które rozwiązanie najlepiej nadaje się do Twojego scenariusza, zobacz wskazówki dotyczące uwierzytelniania.

Aby uzyskać więcej informacji, zobacz Dokumentacja interfejsu API REST usługi Azure DevOps i Wprowadzenie do interfejsów API REST.

Uwierzytelnianie

Uwierzytelnianie za pomocą usługi Azure DevOps podczas korzystania z interfejsów API REST lub bibliotek platformy .NET, wykonując następujące kroki:

Przykłady żądań GET

Następujące żądania języka C# i curl zwracają odpowiedź JSON zawierającą listę wszystkich projektów w określonej organizacji:

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

Przykład żądania POST

Następujące żądanie curl tworzy nowy element roboczy typu "Zadanie" w określonym projekcie:

-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

Przykład żądania PUT

Następujące żądanie curl aktualizuje istniejący element roboczy, zmieniając jego stan na "W toku":

 -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

Przykład żądania DELETE

Następujące żądanie curl usuwa istniejący element roboczy z określonego projektu:

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

Biblioteki klienckie .NET

W tym miejscu używamy dwóch bibliotek klienckich platformy .NET. Upewnij się, że w projekcie .NET odwołujesz się do następujących bibliotek klienckich platformy .NET.

Poniższy przykład umożliwia pobranie listy projektów dla organizacji za pośrednictwem bibliotek klienckich platformy .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;                    
}

Często zadawane pytania

.: Gdzie mogę uzyskać kod źródłowy dla przykładów kodu?

Zobacz https://github.com/Microsoft/vsts-restapi-samplecode.

.: Gdzie mogę znaleźć więcej informacji na temat biblioteki .NET?

Zobacz przegląd bibliotek klienckich.