我正在尝试使用 python 脚本以编程方式在 Azure 板上创建问题卡。
我正在使用 PAT(个人访问令牌)。
headers = base64encodedPAT
headers[Content-Type']='application/json-patch+json'
payload = dictionary_of_different_values_to_set
requesturl=f"https://dev.azure.com/{organization}/{project}/_apis/wit/workitems/$Issue?api-version=7.0"
requestcall = requests.post(url=requesturl, headers=headers, data=bytes(json.dumps(payload),'utf-8'))
我尝试了什么:
- 当我运行 azure 管道时,我得到“失败:400错误请求”
- 当我在在线休息Api测试上运行它时,我得到“503服务不可用0x80070057,无效请求”
- 我参考了微软网站,但没有太多细节
- 我看到了很多YouTube 视频显示了 PAT 的创建,但没有介绍如何在管道中使用它。关于“工作项”Apis 的视频不多。
请让我知道我的方法有什么问题,或者提出一些想法,或者向我指出好的在线资源。
问题代码片段中的一个明显错误是身份验证标头的格式。不应该对整个 PAT 进行 base64 编码。
以下是使用 Python 和 PAT 创建 Azure 工作项的更正后的步骤,以及解决潜在问题的一些提示:
1. 身份验证标头格式:
import base64
personal_access_token = 'YOUR_PAT_HERE' # 不要将的 PAT 硬编码到脚本中。将其存储在一个安全的位置。
encoded_pat = base64.b64encode(f':{personal_access_token}'.encode('utf-8')).decode('utf-8')
headers = {
'Authorization': f'Basic {encoded_pat}',
'Content-Type': 'application/json-patch+json'
}
2. 有效负载结构:
确保的
payload
是正确格式化的 JSON 补丁操作数组。每个操作都应指定其操作类型 (
op
)、要修改的字段的路径 (
path
) 以及要应用的值 (
value
)。
payload = [
{
"op": "add",
"path": "/fields/System.Title",
"value": "Sample work item title"
},
{
"op": "add",
"path": "/fields/System.Description",
"value": "This is a sample work item description"
}
# 根据需要添加更多字段...
]
3. 完整的代码:
import requests
import base64
import json
# **不要** 将的 PAT 硬编码到脚本中。将其存储在一个安全的位置。
personal_access_token = 'YOUR_PAT_HERE'
encoded_pat = base64.b64encode(f':{personal_access_token}'.encode('utf-8')).decode('utf-8')
organization = 'YOUR_ORGANIZATION_NAME'
project = 'YOUR_PROJECT_NAME'
headers = {
'Authorization': f'Basic {encoded_pat}',
'Content-Type': 'application/json-patch+json'
}
payload = [
{
"op": "add",
"path": "/fields/System.Title",
"value": "Sample work item title"
},
{
"op": "add",
"path": "/fields/System.Description",
"value": "This is a sample work item description"
}
]
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, data=json.dumps(payload))
if response.status_code == 201:
print("工作项已成功创建!")
print(response.json())
else:
print(f"请求失败,状态码:{response.status_code}")
print(response.text)
故障排除提示:
- 验证 PAT: 确保的 PAT 有权创建工作项。
- 检查 API 版本: 验证是否在请求 URL 中使用了正确的 API 版本。
- 检查有效负载: 双重检查有效负载以确保其符合 Azure DevOps API 文档中指定的结构。
-
详细日志记录:
打印来自
requests
库的详细响应状态代码和内容,以获取有关错误的更多信息。
通过更正身份验证标头并仔细检查这些点,应该能够成功创建 Azure 工作项。
标签:python,azure-devops,azure-devops-rest-api,tfs-workitem From: 78808222