Azure DevOps REST API - PullRequest
       16

Azure DevOps REST API

1 голос
/ 28 февраля 2020

Я прочитал документацию Azure DevOPS REST API и несколько раз пытался внедрить ее в свое веб-приложение, но безрезультатно. У меня нет опыта использования REST API, и я был бы признателен, если бы кто-то мог направить меня в правильном направлении.

Я пытаюсь создать запрос POST для Azure репозиториев DevOps и wi sh для создания нового репозитория с помощью метода API. Я прочитал документацию по этому вопросу, но я не знаю, как реализовать это в моем собственном проекте. Я понимаю, как мне нужно создать соединение с API, но не знаю, как и где я пишу тело запроса для этого метода. Я хотел бы знать, как я указываю имя нового хранилища. Я на самом деле очень невежественен и не знаю, как вообще использовать REST API.

Я использую Visual Studio с. NET Core 3.0 и планирую использовать его с React. js

Вот код, с которым я работаю до сих пор, и я понятия не имею, где go отсюда:

public class AzureDevOps { 
    public static async void GetRepositories()
    {
        try
        {
            var personalaccesstoken = "PAT_FROM_WEBSITE";

            using (HttpClient client = new HttpClient())
            {
                client.DefaultRequestHeaders.Accept.Add(
                    new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
                    Convert.ToBase64String(
                        System.Text.ASCIIEncoding.ASCII.GetBytes(
                            string.Format("{0}:{1}", "", personalaccesstoken))));

                using (HttpResponseMessage response = await client.GetAsync(
                            "https://dev.azure.com/{organization}/_apis/git/repositories?api-version=5.1"))
                {
                    response.EnsureSuccessStatusCode();
                    string responseBody = await response.Content.ReadAsStringAsync();
                    Console.WriteLine(responseBody);
                }
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.ToString());
        }
    }
}

Буду признателен за любые разъяснения по этому вопросу, а также некоторые примеры того, как использовать REST API. Заранее спасибо!

1 Ответ

1 голос
/ 02 марта 2020

Вы должны использовать POST метод для создания хранилища. Проверьте API здесь:

https://docs.microsoft.com/en-us/rest/api/azure/devops/git/repositories/create?view=azure-devops-rest-5.1

Код должен выглядеть следующим образом:

                var PAT = "xxxxx";

                using (HttpClient client = new HttpClient())
                {
                    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
                        Convert.ToBase64String(
                            System.Text.ASCIIEncoding.ASCII.GetBytes(
                                string.Format("{0}:{1}", "", PAT))));
                    var requestMessage = new HttpRequestMessage(HttpMethod.Post, "https://dev.azure.com/{organization}/{project}/_apis/git/repositories?api-version=5.1");
                    requestMessage.Content = new StringContent("{\"name\": \"RepositoryName\",\"project\": {\"id\": \"xxxxxxx\"}}", Encoding.UTF8, "application/json");
                    using (HttpResponseMessage response = client.SendAsync(requestMessage).Result)
                    {
                        response.EnsureSuccessStatusCode();
                    }
                }

Обновление:

       var PAT = "xxxxx";
       var body = new
            {
                name = "RepositoryName",
                project = new
                {
                    id = "xxxxxxx"
                }
            };

                using (HttpClient client = new HttpClient())
                {
                    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
                        Convert.ToBase64String(
                            System.Text.ASCIIEncoding.ASCII.GetBytes(
                                string.Format("{0}:{1}", "", PAT))));
                    var requestMessage = new HttpRequestMessage(HttpMethod.Post, "https://dev.azure.com/{organization}/{project}/_apis/git/repositories?api-version=5.1");
                    requestMessage.Content = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json");
                    using (HttpResponseMessage response = client.SendAsync(requestMessage).Result)
                    {
                        response.EnsureSuccessStatusCode();
                    }
                }
...