【问题标题】:TFS Rest api - Expand all the related data by a single queryTFS Rest api - 通过单个查询扩展所有相关数据
【发布时间】:2018-01-18 08:01:29
【问题描述】:

我正在尝试从 TFS rest api 获取所有错误报告(不仅是我的所有其他错误报告)。我通过 GET 操作获取数据,但它只显示分配给我。所以,现在我正在使用带有查询的帖子操作。出于身份验证目的,我使用的是 ntlm 插件。以下是我的代码

 var ntlm = require('ntlm')
   , ntlmrequest = require('request').defaults({
     agentClass: require('agentkeepalive').HttpsAgent
   });
    var url = "https://{instance}/tfs/DefaultCollection/{project}/_apis/wit/wiql?$expand=clauses&api-version=1.0"
      , domain = 'myDomain'
      , username = 'userName'
      , password = 'pwd'
      , hostname ='host';

    var query = "Select [State], [Title] From WorkItems Where [System.WorkItemType] = 'Bug' AND [System.State] <> 'Closed' AND [System.State] <> 'Removed' Order By [State] Asc";


    ntlmrequest(url, {
            headers: {
                'Authorization': ntlm.challengeHeader(hostname, domain)
            }
        }, function(err, ntlmres) {
                var options = {
                    method: 'post',
                    body: {query:query},
                    json: true,
                    url: url,
                    headers: {
                        'Authorization': ntlm.responseHeader(ntlmres, url, domain, username, password),
                        'Content-Type': 'application/json'
                    }
                }
                ntlmrequest(options, function (err, ntlmres, body) {
                    if(err)
                    res.json({result:'failed',message:err.message});

                    res.json({result: "success", data: ntlmres.body.workItems});
            });
    });

以上代码返回如下结果

{
    "result": "success",
    "data": [
        {
            "id": 8254,
            "url": "https://{instance}/tfs/DefaultCollection/_apis/wit/workItems/8254"
        },
        {
            "id": 8375,
            "url": "https://{instance}/tfs/DefaultCollection/_apis/wit/workItems/8375"
        } ]
}       

我的要求是获取/扩展结果中可用的 url 数据,而不是 url。是否可以从单个查询中获取所有这些数据。

【问题讨论】:

    标签: node.js tfs ntlm


    【解决方案1】:

    终于找到了解决办法。我只是将网址更改为

    var url="https://{instance}/tfs/DefaultCollection/{project}/_api/_wit/query?__v=1"
    

    并编辑body参数,如下所示

    body: {wiql:query}
    

    它也在加载相关数据。数据格式如下图

    "body"{
        "payload" : {
            "columns" : [
                            System.Id,
                            System.State,
                            System.WorkItemType
                        ],
            "rows" :    [
                            [
                                8050,
                                Resolved,
                                Bug
                            ],
                            [
                                8051,
                                Resolved,
                                Bug
                            ]
                        ]
                    }
    }
    

    【讨论】:

    • 既然已经解决了,如果可能的话,把你的解决方案标记为答案,这样可以帮助其他社区成员。祝你有美好的一天:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    • 2017-11-23
    • 1970-01-01
    • 2011-12-18
    • 2018-12-17
    • 1970-01-01
    相关资源
    最近更新 更多