如何用Python的requests库替代JIRA.project_versions获取Jira所有版本?
使用requests获取Jira项目的发布版本列表
要替代JIRA.project_versions(id)方法,你可以直接调用Jira REST API的项目版本查询接口,同样支持startAt和maxResults参数实现分页遍历,具体实现如下:
核心实现细节
- 目标接口:
GET /rest/api/2/project/{projectIdOrKey}/versions,其中projectIdOrKey可以是项目ID或项目键(比如项目名My Project的键可能是MP,用键更简洁) - 分页逻辑:通过
startAt和maxResults参数控制分页,结合响应头的X-Total字段判断总数量,直到获取完所有版本 - 认证、请求头配置和你之前获取问题数量的代码完全一致
完整代码示例
import requests from requests.auth import HTTPBasicAuth # 替换为你的项目键/ID、域名和认证信息 project_identifier = "My\\ Project" domain = "https://mydomain.atlassian.net" auth = HTTPBasicAuth(user_details.user, user_details.password) headers = {"Accept": "application/json"} all_versions = [] start_at = 0 max_results = 100 # Jira API允许的单页最大数量为100 while True: params = { "startAt": start_at, "maxResults": max_results } response = requests.request( "GET", url=f"{domain}/rest/api/2/project/{project_identifier}/versions", headers=headers, params=params, auth=auth ) # 处理请求失败情况 if response.status_code != 200: print(f"请求失败,状态码:{response.status_code},响应内容:{response.text}") break current_page_versions = response.json() all_versions.extend(current_page_versions) # 判断是否还有更多版本需要获取 total_versions = int(response.headers.get("X-Total", 0)) if start_at + max_results >= total_versions: break start_at += max_results # 遍历输出版本信息(可根据需求调整字段) for version in all_versions: print(f"版本名称: {version['name']}, ID: {version['id']}, 状态: {version['status']}, 发布日期: {version.get('releaseDate', '未设置')}")
关键说明
- 若项目名包含空格,需像示例中那样转义(
My\\ Project),或者直接使用项目键(比如MP)避免转义麻烦 - 返回的版本对象包含
name、id、status(可选值:released/unreleased/archived)、releaseDate等字段,可按需提取 - 接口返回的响应头
X-Total会给出版本总数量,用于判断分页是否结束
内容的提问来源于stack exchange,提问作者Conor Lennon
相关产品推荐
相关产品推荐

