我正在寻找一种使用 Python 提交门户表单的方法。例如,我在 https://instance.atlassian.net/servicedesk/customer/portal/1/group/1/create/1
有一个表格我可以使用 email:token 进行身份验证,无论是否有 jira 模块,也会产生问题。但是,我想通过在门户上提交表单来创建问题。有没有办法使用 python 来做到这一点?可以使用或不使用 jira 模块
这里是我必须使用 jira 模块进行身份验证和创建问题的代码:
from jira import JIRA
jira_connection = JIRA(basic_auth=('[email protected]', 'tokenxxxxxxxxx'), server="https://myinstance.atlassian.net")
issue_dict = {
'project': {'key': 'TEST'},
'summary': 'Testing script',
'description': 'Testing script',
'issuetype': {'name': 'Service Request'},
}
new_issue = jira_connection.create_issue(fields=issue_dict)
print(new_issue)
这是不使用 jira 模块的代码:
import requests
import json
url = "https://myinstance.atlassian.net/rest/api/3/myself"
headers = {
"Authorization": "Basic <base64 encoded email:token>",
"Accept": "application/json"
}
response = requests.request( "GET", url, headers=headers )
print(json.dumps(json.loads(response.text), sort_keys=True, indent=4, separators=(",", ": ")))
这是我正在尝试但收到 400 的帖子:
jira_load={
"fields": {
"description": {"version":1,"type":"doc","content":[{"type":"paragraph","content":[{"type":"text","text":"Test description"}]}]},
"summary": "Test summary",
"project": {
"key": "TEST"
},
"issuetype": {
"name": "IT Help"
},
}
}
url = 'https://instance.atlassian.net/servicedesk/customer/portal/1/create/1'
r = requests.post(url, data=jira_load)
print ("HERE's the JSON RESPONSE\n\n ", r.status_code, r.headers)
print ("The response content is\n\n", r.content)
对于 Jira Service Management,您可以使用其 REST API: https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#jira-cloud-platform-apis 进行操作门户问题(创建 - https://developer.atlassian.com/cloud/jira/service-desk/rest/api-group-request/#api-rest-servicedeskapi-request-post)。我想这个 JIRA 库是开源的,可能没有 SD 操作(不确定它是什么)。