求助:使用Atlassian Python API获取史诗关联任务遇400错误,求可行代码
获取Jira史诗关联任务的可行代码方案
一、Atlassian Python API 实现
核心问题修正
之前的400错误主要源于两个问题:
get_issues_for_epic的epic_id参数需要史诗的内部数字ID,而非史诗key(如EPIC-123)- Cloud版Jira认证优先使用API Token,而非用户密码,密码认证可能引发权限或参数解析错误
可行代码
import os from atlassian import Jira # 初始化Jira Cloud客户端 jira = Jira( url=os.getenv('JIRA_URL'), # 格式示例:https://your-domain.atlassian.net username=os.getenv('JIRA_USERNAME'), password=os.getenv('JIRA_API_TOKEN'), # 替换为Atlassian账户生成的API Token cloud=True ) # 方式1:用JQL查询(无需看板ID,兼容性更强) epic_key = "EPIC-123" # 替换为你的史诗key jql = f'"Epic Link" = "{epic_key}"' issues_result = jira.jql(jql) # 遍历输出关联任务 for issue in issues_result['issues']: print(f"任务Key: {issue['key']}, 标题: {issue['fields']['summary']}") # 方式2:修复get_issues_for_epic参数(需看板ID和史诗内部ID) # 先获取史诗的内部ID epic_detail = jira.issue(epic_key) epic_internal_id = epic_detail['id'] board_id = 1 # 替换为史诗所属的看板ID epic_issues = jira.get_issues_for_epic(board_id=board_id, epic_id=epic_internal_id) for issue in epic_issues: print(f"任务Key: {issue['key']}, 标题: {issue['fields']['summary']}")
二、REST API 实现
Curl 命令
curl -X GET \ "https://your-domain.atlassian.net/rest/api/3/search?jql=%22Epic%20Link%22%20%3D%20%22EPIC-123%22" \ -u "your-email@example.com:your-api-token"
Python Requests 实现
import os import requests jira_url = os.getenv('JIRA_URL') + "/rest/api/3/search" auth = (os.getenv('JIRA_USERNAME'), os.getenv('JIRA_API_TOKEN')) query_params = { 'jql': f'"Epic Link" = "{epic_key}"' } response = requests.get(jira_url, auth=auth, params=query_params) response.raise_for_status() # 捕获HTTP错误 issues_data = response.json() for issue in issues_data['issues']: print(f"任务Key: {issue['key']}, 标题: {issue['fields']['summary']}")
注意事项
- API Token需在Atlassian账户设置中生成:头像 → 个人设置 → 安全 → API tokens
- 确保当前用户拥有该史诗及关联任务的访问权限
- JQL中的字段名需与你的Jira实例一致,若自定义过史诗关联字段,需替换为实际字段键
内容的提问来源于stack exchange,提问作者Krishnadhas
相关产品推荐
相关产品推荐

