2016-10-18 4 views
3

Я пытаюсь подключиться к своей VSTS build 2.0 api через узел, чтобы создать новое определение сборки. Я получаю HTTP 302, который является перенаправлением. Я не уверен, почему это произошло, я смог отправить тот же запрос с тем же URL-адресом через интерфейс SOAP без каких-либо проблем. Ниже приведен фрагмент кода.Подключение к моей Visual Studio Online API возвращает HTTP 302

var Client = require('node-rest-client').Client; 
      var client = new Client(); 
      var accessToken = 'MY ACCESS TOKEN'; 
      var args = { 
       data: JSON.stringify(configJSON), 
       headers: { 
        "Content-Type": "application/json", 
        "Accept": "application/json"} 
       ,auth: { 
        'bearer': accessToken 
       } 
      }; 

      client.post("https://firstname.lastname.visualstudio.com/SampleApp/_apis/build/definitions?api-version=2.0", args, function (data, response) { 
       console.log(response.statusCode); 
      }).on('error', function (err) { 
       console.log('something went wrong on the request', err); 
      }); 
+0

Привет, причина в том, что аутентификация не удалась, я обновил свой ответ, вы можете проверить его. –

+0

Каков результат после указания авторизации в заголовках? –

ответ

2

Причина заключается в том, что аутентификация не удалась, поэтому он перенаправляет на страницу входа в систему, поэтому вы получите код 302 ответа.

Я изменяю код, чтобы добавить Авторизация в заголовок и удалить параметр auth, после чего он отлично работает.

var args = { 
     data: JSON.stringify(configJSON), 
     headers: { 
      "Content-Type": "application/json", 
      "Accept": "application/json", 
      "Authorization": "Bearer " + accessToken 
     } 
     //, auth: { 
     // "Bearer":accessToken 
     //} 
    }; 

С другой стороны, я полагаю, что вы можете создать определение сборки через VSTs-узел-апи или PowerShell.

Для VSTS-node-api существует функция createDefinition в BuildApi (xxx), there - образец того, как его использовать.

Для PowerShell вы можете использовать Invoke-RestMethod для вызова REST API, there - некоторые примеры в этой статье.

Смежные вопросы