Node.js调用Azure DevOps API创建工作项时遭遇404错误求助
排查Azure DevOps创建工作项的404错误
1. 修正API URL格式
你当前的请求URL存在格式错误,Azure DevOps创建工作项的API要求工作项类型前必须加上$符号。正确的URL拼接方式需要在workItemType前添加转义后的$(模板字符串中用$$表示单个$):
const url = `${orgUrl}/${projectName}/_apis/wit/workitems/$${workItemType}?api-version=7.1`;
修正后完整URL应为:https://dev.azure.com/OrganisationName/ProjectName/_apis/wit/workitems/$Task?api-version=7.1
2. 调整请求体与Content-Type
Azure DevOps的工作项创建接口要求使用JSON Patch格式的请求体,且Content-Type必须设置为application/json-patch+json,而非普通的application/json。你需要修改请求体结构和请求头:
// 重新构造请求体为JSON Patch操作数组 const workItemData = [ { op: 'add', path: '/fields/System.Title', value: short_description }, { op: 'add', path: '/fields/System.AreaPath', value: projectName }, { op: 'add', path: '/fields/System.IterationPath', value: projectName }, { op: 'add', path: '/fields/Microsoft.VSTS.Common.Priority', value: urgency }, { op: 'add', path: '/fields/Microsoft.VSTS.Common.State', value: 'To Do' }, { op: 'add', path: '/fields/System.AssignedTo', value: assigned_to } ]; // 调整请求的Content-Type const response = await axios.post(url, workItemData, { headers: { 'Content-Type': 'application/json-patch+json', 'Authorization': `Basic ${Buffer.from(`:${pat}`).toString('base64')}`, }, });
3. 验证基础配置准确性
- 确认
organisationName和projectName与Azure DevOps平台上的名称完全一致(区分大小写) - 检查PAT的权限范围:确保已勾选Work Items (Read & Write),且作用域覆盖目标组织/项目
- 验证
System.AreaPath和System.IterationPath的取值:如果项目下有细分的区域/迭代层级,需传入完整路径(例如ProjectName\\TeamArea)
内容的提问来源于stack exchange,提问作者Pmd
相关产品推荐
相关产品推荐

