【问题标题】:devops-rest APi - $expand not working for "Work Items - Get Work Items Batch"devops-rest APi - $expand 不适用于“Work Items - Get Work Items Batch”
【发布时间】:2020-02-29 21:48:57
【问题描述】:

我想从选定的工作项中访问一些数据。
以下是我的工作代码。

function postApiData(ApiUrl, responseBody, token) {
            var res = '';
            $.ajax({
                type: 'POST',
                async: false,
                url: ApiUrl,
                contentType: 'application/json',
                data: JSON.stringify(responseBody),
                cache: false,
                dataType: 'json',
                beforeSend: function (xhr) {
                    xhr.setRequestHeader("Authorization", "Basic " + btoa("" + ":" + _token));
                },
            }).done(function (data) {
                res = data;
            });
        return res;
    };

 var d = {
                    "ids": itemlist,
                    "fields": ["System.Id", "System.WorkItemType", "System.Title", "System.AssignedTo", "System.State", "System.Tags", "cust.PID", "cust.Product", "cust.ReleasedToProduction"]
                };
                var itemdata = postApiData('https://dev.azure.com/COMP/products/_apis/wit/workitemsbatch?$expand=relations&api-version=5.1', d, '');

但是,$expand 不能在这里获取关系。查询给出结果并始终忽略 $expand。

我也尝试在请求正文中传递 $expand,但它也不起作用。有人可以在这里指导吗?

【问题讨论】:

    标签: javascript ajax azure-devops devops azure-devops-rest-api


    【解决方案1】:

    这是因为如果expand 的值为relations,则expand 参数不能与fields 参数一起使用。

    您可以在 Postman 中使用您的请求正文执行此 api。您将收到明确的信息,说明您为什么不能应用它。


    要使用您的 API,如果您在请求正文中指定 fields,则不应再使用 expand,反之亦然。这是按照设计的,并且已硬编码到我们的脚本中。如果不是NoneLinks,我们不允许另一个$expand 值。

    对于$expand(NoneRelationsFieldsLinksAll)这5个值,只有NoneLinks可以在API中成功使用fields .这是适用于所有 API 的通用规则,包括此 one


    另外,请在请求正文中使用$expand=Relations,而不是如文档所述的URI。这里如果你在 URI 中使用它,它不会被服务器脚本使用,因为这个 API 调用的方法没有这个参数。另一个可以在 URI 中使用 $expand 的 API(我们通常会提到并显示它是否可以在文档中的 URI 中使用),相应的脚本有参数可以访问这些通过 URI 传递的值.

    所以,这里请在请求正文中使用$expand=Relations,然后您将获得包含所有字段及其所有关系的结果。

    【讨论】:

    • 您好,我已删除字段并在 URL 中添加了 $expand =relations。现在它给出了所有字段,但关系仍然缺失
    • @JigarParekh 请在文档中显示的请求正文中使用 $expand=relations。然后你可以看到响应中的所有字段和相关关系。
    • @JigarParekh,已在答案中更新这些内容。请参考。
    • @MerlinLiang-MSFT 你是说获得工作项列表(甚至单个工作项)的关系部分的唯一方法是我们是否还获得了未删节的字段部分?这似乎没有任何限制意义,因为这两个部分是独立的。特别是对于批量列表调用。在我们的例子中,我们主要只对一长串工作项的关系感兴趣,并且包括每个可能字段的内容会增加很多膨胀。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-06
    • 2021-08-01
    • 1970-01-01
    • 2017-09-05
    • 2016-02-05
    • 2016-09-01
    • 1970-01-01
    相关资源
    最近更新 更多