You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Azure Workitems REST API创建Issue遇400/503错误求助

Azure Boards 创建Issue卡片API请求问题排查

代码核心问题点

  • PAT认证头格式错误:你的headers直接使用base64encodedPAT,但Azure REST API要求认证头格式为Authorization: Basic <base64编码的PAT>,需先构建完整认证字符串再加入headers。
  • Payload格式不符合要求:Azure Work Items创建API要求payload是JSON Patch格式的数组,而非普通字典。每个字段需用{ "op": "add", "path": "/fields/[字段名]", "value": "值" }结构定义。
  • 请求数据处理冗余:requests.post无需将JSON字符串转成bytes,直接使用json=payload参数即可,框架会自动处理编码与格式匹配。

修正后的示例代码

import requests
import base64
import json

# 正确构建认证头
pat = "你的PAT令牌"
base64_pat = base64.b64encode(f":{pat}".encode("utf-8")).decode("utf-8")
headers = {
    "Authorization": f"Basic {base64_pat}",
    "Content-Type": "application/json-patch+json"
}

# 符合要求的JSON Patch格式Payload
payload = [
    {
        "op": "add",
        "path": "/fields/System.Title",
        "value": "测试Issue标题"
    },
    {
        "op": "add",
        "path": "/fields/System.Description",
        "value": "测试Issue描述内容"
    }
]

request_url = f"https://dev.azure.com/{organization}/{project}/_apis/wit/workitems/$Issue?api-version=7.0"
response = requests.post(url=request_url, headers=headers, json=payload)

# 打印响应详情用于排查
print(response.status_code)
print(response.text)

错误排查步骤

  • 本地先验证API请求:不要直接在Pipeline运行,先用Postman或curl测试正确请求格式,确认能创建Issue后再移植到脚本。
  • 检查PAT权限:确保PAT拥有**Work Items (Read & Write)**权限,且组织、项目范围正确,未过期。
  • 查看响应详细内容:无论400还是503错误,打印response.text获取具体错误原因,Azure API通常会返回明确提示(如字段不存在、权限不足、格式错误)。
  • Pipeline变量检查:在Azure Pipeline运行时,确认organization、project、PAT等变量正确注入,无空值或首尾空格。

实用排查资源

  • Azure官方Work Items API文档:重点查看「Create a work item」章节,包含完整请求格式、字段列表与示例。
  • Azure PAT权限配置文档:确认PAT所需最小权限范围,避免过度授权或权限不足。
  • Azure Pipeline变量管理指南:学习安全存储PAT等敏感信息,避免明文泄露。

内容的提问来源于stack exchange,提问作者ProgrammerHGP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 06:52:38