Django集成atlassian-python-api调用Jira API报无连接适配器错误
问题根因
从报错信息No connection adapters were found for "['https://uk-ssdo.atlassian.net']/rest/agile/1.0/board?maxResults=50"可以直接定位异常来源:
实际传入Jira类初始化的url参数不是合法的字符串格式HTTP地址,而是一个长度为1的列表。
atlassian-python-api底层基于requests库发起HTTP请求,当URL被拼接成带方括号的非标准格式时,requests无法匹配到对应协议的连接适配器,就会抛出该报错。
硬编码初始化时运行正常,是因为此时url参数直接传入纯字符串,完全符合类的参数要求。
常见触发场景
走DRF视图集流程时出现参数类型错误,通常由以下场景导致:
- Django配置文件中误将Jira地址写成列表格式,例如写为
JIRA_SERVER = ['https://uk-ssdo.atlassian.net/']而非纯字符串 - 从请求参数、数据库配置、环境变量读取Jira地址时,未做类型归一化处理,直接将单元素列表透传给Jira初始化方法
- 封装Jira实例初始化逻辑时,未对入参格式做校验,传入了错误类型的参数
修复方法
- 在Jira实例初始化的代码前增加参数打印,确认实际传入的
url参数值与类型,通常会看到类似<class 'list'> ['https://uk-ssdo.atlassian.net/']的输出 - 对入参做类型兼容处理,当检测到传入的url为单元素列表时,取出第一个元素转为纯字符串后再传入初始化方法
- 修正配置文件中的错误写法,将带方括号的列表格式Jira地址调整为标准字符串格式
内容的提问来源于stack exchange,提问作者godhar
相关产品推荐
相关产品推荐

