Примеры REST API для Azure DevOps

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

Большинство примеров в этой статье используют личные маркеры доступа (PATs). PaTs — это компактный пример проверки подлинности. Существует множество других механизмов проверки подлинности, включая библиотеку проверки подлинности Майкрософт, OAuth и маркеры сеансов. Дополнительные сведения см. в руководстве по проверке подлинности.

Дополнительные сведения см . в справочнике по REST API Azure DevOps Services и начале работы с REST API.

Личные маркеры доступа

Проверка подлинности с помощью Azure DevOps при использовании REST API или библиотек .NET.

Начало работы с этими примерами и создание PAT.

Совет

PATs похожи на пароли. Держите их в секрете. Сохраните их в безопасном расположении после создания PAT.

Чтобы предоставить PAT через заголовок HTTP, сначала преобразуйте его в строку Base64. В следующем примере показано, как преобразовать в Base64 с помощью C#. Результирующая строка можно указать в виде заголовка HTTP в следующем формате:

Authorization: Basic BASE64USERNAME:PATSTRING

REST API

См. следующий пример получения списка проектов для организации с помощью REST API.

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;
    }   
}

Клиентские библиотеки .NET

Здесь мы используем две клиентские библиотеки .NET. Убедитесь, что вы ссылаетесь на следующие клиентские библиотеки .NET в проекте .NET.

См. следующий пример получения списка проектов для организации с помощью клиентских библиотек .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;                    
}

Вопросы и ответы

Вопрос. Где можно получить исходный код для примеров кода?

Ответ. См. раздел https://github.com/Microsoft/vsts-restapi-samplecode.

Вопрос. Где можно найти дополнительные сведения о библиотеке .NET?

Ответ. Обзор клиентских библиотек.