【问题标题】:Send POST request to Jira using API token使用 API 令牌向 Jira 发送 POST 请求
【发布时间】:2018-09-14 10:02:22
【问题描述】:

我正在使用 curl 命令来创建 Jira 票证,我无法在 python3 中重现该命令。 authentication with python requests doc 中的 HTTPBasicAuth 和 HTTPDigestAuth 方法无法使用 API 密钥。

请在下面找到提到的curl 和python 代码。

重击:

curl -vL -u "my@email:API_KEY" -X POST -H "Content-Type:application/json" --data "$DATA" https://jira-url/rest/api/2/issue/

Python:

headers = {
    'Content-Type': 'application/json',
    'X-Atlassian-Token': 'no-check'
}

url = https://jira-url

response = requests.post('{0}/rest/api/2/issue/'.format(url),
                         headers=headers,
                         data=data,
                         auth=requests.auth.HTTPDigestAuth(user_email, api_key),
                         verify=False,
                         allow_redirects=True)

我收到一个错误400 Bad Request for url: URL

【问题讨论】:

  • 我用答案转换了评论,你确定data 是一个对象而不是一个json字符串吗?
  • @Blusky 是的,data 的指定与标头相同。 print(type(data)) 返回<class 'dict'>

标签: python curl python-requests jira-rest-api


【解决方案1】:

你可以试试这个:

headers = {
    'X-Atlassian-Token': 'no-check'
}

data = {"var1": "val1", "var2": "val2"}

url = https://jira-url

response = requests.post('{0}/rest/api/2/issue/'.format(url),
                         headers=headers,
                         json=data,
                         auth=requests.auth.HTTPDigestAuth(user_email, api_key),
                         verify=False,
                         allow_redirects=True)

(我用json 替换了data 参数,并从标题中删除了Content-Type,因为requests 会自动检测到它)。

您希望 data 成为 Python 对象而不是 json 字符串。

【讨论】:

  • 将data 更改为json 会返回相同的400 HTTP 错误。关于Content-Type - 我无法删除它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-16
  • 2019-10-19
  • 2016-05-12
  • 2015-01-26
  • 2019-11-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多