连接到我的Visual Studio在线API返回HTTP 302

Connecting to my Visual Studio Online API returns HTTP 302

本文关键字:API 返回 HTTP 在线 Studio 我的 Visual 连接      更新时间:2023-09-26

我试图通过Node连接到我的VSTS构建2.0 api以创建一个新的构建定义。我得到HTTP 302,这是一个重定向。我不确定为什么会发生这种情况,我能够通过SOAP UI提交相同的请求,使用相同的URL,没有任何问题。下面是代码片段:

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

原因是身份验证失败,所以它重定向到登录页面,这就是为什么您得到302响应代码。

我修改代码,将Authorization添加到header中,并删除auth参数,之后它就可以正常工作了。

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

另一方面,我建议你可以通过vsts-node-api或PowerShell创建构建定义。

对于VSTS-node-api,在BuildApi (xxx)中有createDefinition函数,有一个关于如何使用它的示例。

对于PowerShell,您可以使用Invoke-RestMethod调用REST API,本文中有一些示例。