JIRA Server用Python调用API获取自定义字段ID如何添加身份凭证?
错误原因
- 你将
curl命令直接传入requests.get()的第一个参数,该方法仅接受合法的HTTP URL作为地址参数,无法识别curl语法,因此抛出InvalidSchema报错。 - 你原本的代码存在缩进错误,
response是函数内的局部变量,函数外直接调用response.json()会触发变量未定义的报错。 - JIRA Server的REST API需要身份验证,你最初的代码未携带凭证,只能拿到无需权限的公开系统字段,看不到私有自定义字段。
正确实现代码
import requests # 请替换为实际的JIRA地址、用户名、登录凭证 JIRA_BASE_URL = "https://你的JIRA服务地址" JIRA_USER = "你的登录用户名" # 密码建议通过环境变量、加密配置文件读取,不要硬编码在代码中 JIRA_PASS = "你的登录密码/API Token" def get_custom_fields(): response = requests.get( url=f"{JIRA_BASE_URL}/rest/api/2/field", # requests原生支持基础身份验证,直接通过auth参数传入账号密码即可 auth=(JIRA_USER, JIRA_PASS), headers={"Content-Type": "application/json"}, # 若你的JIRA使用自签名SSL证书,可临时添加下方参数跳过校验,生产环境不建议使用 # verify=False ) # 先判断请求状态,避免后续解析报错 if response.status_code != 200: print(f"请求失败,状态码:{response.status_code},返回信息:{response.text}") return field_list = response.json() for field in field_list: print(f"Field Name : {field['name']} Field Id : {field['id']}") if __name__ == "__main__": get_custom_fields()
注意事项
- 高版本JIRA Server支持使用API Token替代密码登录,安全性更高
- 若返回结果中仍然缺少你需要的自定义字段,请确认当前登录账号拥有该自定义字段的查看权限
- 不要在可公开访问的代码中硬编码账号密码等敏感信息
内容的提问来源于stack exchange,提问作者Aravind Viswanathan
相关产品推荐
相关产品推荐

