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
值为relations
,expand
参数不能与fields
参数一起使用。
您可以使用 Postman 中的请求正文执行此 api。您将收到明确的消息,说明为什么您不能应用它。
要使用您的 API,如果您在请求正文中指定 fields
,则不应再使用 expand
,反之亦然。这是设计好的,并且已硬编码到我们的脚本中。如果不是 None
或 Links
,我们不允许另一个 $expand
值。
对于$expand
的5个值(None
,Relations
,Fields
,Links
,All
),只有None
和 Links
可以在 API 中成功地与 fields
一起工作。这是适用于所有 API 的通用规则,包括此 one。
此外,请在请求正文中使用 $expand=Relations
而不是在文档中描述的显示的 URI 中。这里如果你在 URI 中使用它,它不会被服务器脚本使用,因为这个 API 调用的方法没有这个参数。另一个可以在URI中使用$expand的API(正常情况下,我们会在文档中的URI中提及并显示它是否可以使用),相应的脚本有参数可以访问这些由 URI 传递的值。
所以,这里请在请求正文中使用$expand=Relations
,然后您将得到包含所有字段及其所有关系的结果。
我想从选定的工作项中访问一些数据。
下面是我的工作代码。
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
值为relations
,expand
参数不能与fields
参数一起使用。
您可以使用 Postman 中的请求正文执行此 api。您将收到明确的消息,说明为什么您不能应用它。
要使用您的 API,如果您在请求正文中指定 fields
,则不应再使用 expand
,反之亦然。这是设计好的,并且已硬编码到我们的脚本中。如果不是 None
或 Links
,我们不允许另一个 $expand
值。
对于$expand
的5个值(None
,Relations
,Fields
,Links
,All
),只有None
和 Links
可以在 API 中成功地与 fields
一起工作。这是适用于所有 API 的通用规则,包括此 one。
此外,请在请求正文中使用 $expand=Relations
而不是在文档中描述的显示的 URI 中。这里如果你在 URI 中使用它,它不会被服务器脚本使用,因为这个 API 调用的方法没有这个参数。另一个可以在URI中使用$expand的API(正常情况下,我们会在文档中的URI中提及并显示它是否可以使用),相应的脚本有参数可以访问这些由 URI 传递的值。
所以,这里请在请求正文中使用$expand=Relations
,然后您将得到包含所有字段及其所有关系的结果。