我有一个 Node JS 应用程序,用于创建和获取 azure DevOps 票证。因此,创建方法工作正常,并且在 DevOps 中创建了票证,但当尝试获取票证详细信息时,它显示错误。 我的获取方法如下,我在其中传递工作项的标题并尝试从 Azure DevOps 检索所有详细信息。
async function getWorkItemIdByTitle(workItemTitle) {
let status = "";
console.log("getting work item ID")
console.log(workItemTitle);
try {
// Encode the title for the URL
const encodedTitle = encodeURIComponent(workItemTitle);
// Construct the query URL to search for work items by title
const url = `${orgUrl}/${projectNameForURL}/_apis/wit/wiql?api-version=7.1`;
// WIQL (Work Item Query Language) query to search for work items by title
const wiqlQuery = `SELECT [System.Id] FROM WorkItems WHERE [System.Title] = '${encodedTitle}'`;
const response = await axios.post(url, { query: wiqlQuery }, {
headers: {
'Content-Type': 'application/json-patch+json',
'Authorization': `Basic ${Buffer.from(`:${pat}`).toString('base64')}`,
},
});
// Check if any work items were found
if (response.data.workItems.length > 0) {
const workItemId = response.data.workItems[0].id;
console.log(`Work item ID for title '${workItemTitle}': ${workItemId}`);
status = "Incident Number: " + workItemId;
} else {
console.log(`No work item found with title '${workItemTitle}'`);
status = "No matching incidents found"
}
} catch (error) {
console.error('Error retrieving work item by title:', error.response ? error.response.data : error.message);
status = "Error fetching incidents";
}
console.log("STATUS: ", status);
return status;
}
我是新手,任何帮助将不胜感激。
TF400898
错误是由您为标题设置的“Content-Type
”错误引起的。正确的 'Content-Type
' 应该是 'application/json
' 而不是 'application/json-patch+json
'。
headers: {
'Content-Type': 'application/json',
'Authorization': `Basic ${Buffer.from(`:${pat}`).toString('base64')}`,
}
此外,您不应该对传递到函数中的工作项标题进行编码,这会让 WIQL 无法获取正确的标题并导致找不到工作项。
const wiqlQuery = `SELECT [System.Id] FROM WorkItems WHERE [System.Title] = '${workItemTitle}'`;