devops-rest APi - $expand 不适用于 "Work Items - Get Work Items Batch"

devops-rest APi - $expand not working for "Work Items - Get Work Items Batch"

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

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,但它也不起作用。有人可以在这里指导吗?

那是因为如果expand值为relationsexpand参数不能与fields参数一起使用。

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


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

对于$expand的5个值(None,Relations,Fields,Links,All),只有NoneLinks 可以在 API 中成功地与 fields 一起工作。这是适用于所有 API 的通用规则,包括此 one


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

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