Python请求会话JIRA REST发布了http 405

时间:2017-11-23 17:17:46

标签: python-requests jira-rest-api

使用python请求会话我可以连接到JIRA并检索问题信息......

session = requests.Session()
headers = {"Authorization": "Basic %s" % bas64_val}
session.post(jira_rest_url, headers=headers)
jira = session.get(jira_srch_issue_url + select_fields)

# select_fields = the fields I want from the issue

现在我正在尝试通过JIRA API发布有效负载,使用固定的问题网址,例如“https://my_jira_server.com:1234/rest/api/latest/issue/KEY-9876

以下情况应如下:https://developer.atlassian.com/jiradev/jira-apis/about-the-jira-rest-apis/jira-rest-api-tutorials/jira-rest-api-example-edit-issues

payload = { "update": {
    "fixVersions": [ {"set": "release-2.139.0"} ]
}}
posted = session.post(jira_task_url, data=payload)

# returns <Response [405]>
# jira_task_url = https://my_jira_server.com:1234/rest/api/latest/issue/KEY-9876

但这似乎不起作用!查看 http 405 响应,表明我的有效负载格式不正确!值得注意的是,诊断并不是最容易的事情。

我在这里做错了什么?对此有任何帮助将非常感激。

请注意,我希望使用python jira模块,我使用requests.session来管理不同系统的多个会话,即JIRA,TeamCity等。

1 个答案:

答案 0 :(得分:0)

找到解决方案!我有两个问题:

1 )实际的语法结构应该是:

fix_version = { "update": { "fixVersions": [ {"set" : [{ "name" : "release-2.139.0" }]}]

2 )为确保有效负载实际呈现为JSON,请使用json.dumps()获取对象并生成字符串(请参阅here)并设置'content-type 'to'application / json':

payload = json.dumps(fix_version)
app_json = { 'content-type': 'application/json' }
session.put(https://.../rest/api/latest/issue/KEY-9876, headers=app_json, data=payload)

而不是尝试手动定义JSON!