javascript - devops-rest APi - $expand 不适用于“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
参数不能与参数一起使用。fields
expand
relations
您可以在Postman中使用您的请求正文执行此 api 。您将收到明确的信息,说明为什么您不能应用它。
要使用您的 API,如果您fields
在请求正文中指定 ,则expand
不应再使用,反之亦然。这是按照设计的,并且已经硬编码到我们的脚本中。$expand
如果不是None
or ,我们不允许其他值Links
。
对于$expand
( None
, Relations
, Fields
, Links
, All
) 的 5 个值,只有None
并且Links
可以fields
在 API 中成功使用。这是适用于所有 API 的通用规则,包括这个。
另外,请$expand=Relations
在请求正文中使用,而不是在描述的文档中显示的 URI 中使用。这里如果你在 URI 中使用它,它不会被服务器脚本使用,因为这个 API 调用的方法没有这个参数。另一个可以在 URI 中使用 $expand 的 API(通常,我们会在文档中提到并显示它是否可以在 URI 中使用),相应的脚本有参数可以访问这些通过 URI 传递的值。
因此,请$expand=Relations
在请求正文中使用,然后您将获得包含所有字段及其所有关系的结果。
推荐阅读
- angular - 如何从服务中按点击调用功能
- c++ - 关于引用和指针的问题
- html - 如何选择 div 中的两种不同输入类型的文本?
- angular - ChangeDetectorRef 破坏状态
- word2vec - 如何建立一个propper H2O word2vec training_frame
- excel - 使用 instr 函数在特定单元格中查找动态文本字符串的完全匹配
- scala - 为什么从 Int 到 UInt 的隐式类型转换不起作用?
- python - 从包含不同长度子列表的列表中构造所有组合
- mongodb - 与 MongoDB 同步的多主控
- html - 如何将三个点均匀地间隔为瘦汉堡菜单图标?