尝试 POST 到 JIRA 问题时出现 400 错误
400 Error while trying to POST to JIRA issue
我正在尝试将 JIRA 问题中的 'transition' 属性 设置为已完成(根据文档为 10000)。根据文档,这个错误是 'If there is no transition specified.'
我还使用 ?expand=transitions.fields 来验证 10000 是否完整。
使用这些文档
https://docs.atlassian.com/jira/REST/latest/#api/2/issue-doTransition
https://jira.atlassian.com/plugins/servlet/restbrowser#/resource/api-2-issue-issueidorkey-transitions/POST
这是我的要求
url = 'http://MYURL/rest/api/2/issue/ISSUE-ID/transitions'
payload1 = open('data3.json', 'r').read()
payload = json.loads(payload1)
textFile = requests.post(url, auth=('username', 'password'), json=payload)
我的 data3.json 文件中的内容是
{
"transition": 10000
}
编辑:我也将我的 JSON 更改为此,但我收到 500 错误
{
"transition": {
"id": "10000"
}
}
我得到的错误
{"errorMessages":["Can not instantiate value of type [simple type,classcom.atlassian.jira.rest.v2.issue.TransitionBean] from JSON integral number;no single-int-arg constructor/factory method (through reference chain:com.atlassian.jira.rest.v2.issue.IssueUpdateBean[\"transition\"])"]}400
我非常确信我的问题出在我的 json 文件中,因为我已多次在此代码段上方的代码中使用 GET,但我可能是错的。
是的,您是对的,JSON 是错误的,它甚至不是有效的 json,因为该值不是数字、字符串、对象或数组。文档说:
The fields that can be set on transtion, in either the fields
parameter or the update parameter can be determined using the
/rest/api/2/issue/{issueIdOrKey}/transitions?expand=transitions.fields
resource.
因此您需要在 /rest/api/2/issue/{issueIdOrKey}/transitions?expand=transitions.fields
上执行获取请求以获取可能值的列表,然后在 json
中进行设置
{
"transition": {
"id" : "an_id_from_response"
}
}
我认为我遇到的问题是流程问题。我无法从打开的问题直接跳到 'completed'。但是,我可以从正在创建的问题转到 'Done'.
{
"transition": {
"name": "Done",
"id": "151"
}
}
因为这正是我所需要的,所以我会使用它。如果我找到如何完成票证,我会 post 返回。
此外,我认为我们自定义 JIRA 的事实导致我得到 'Completed' 作为有效转换,即使它不是。
我正在尝试将 JIRA 问题中的 'transition' 属性 设置为已完成(根据文档为 10000)。根据文档,这个错误是 'If there is no transition specified.'
我还使用 ?expand=transitions.fields 来验证 10000 是否完整。
使用这些文档 https://docs.atlassian.com/jira/REST/latest/#api/2/issue-doTransition https://jira.atlassian.com/plugins/servlet/restbrowser#/resource/api-2-issue-issueidorkey-transitions/POST
这是我的要求
url = 'http://MYURL/rest/api/2/issue/ISSUE-ID/transitions'
payload1 = open('data3.json', 'r').read()
payload = json.loads(payload1)
textFile = requests.post(url, auth=('username', 'password'), json=payload)
我的 data3.json 文件中的内容是
{
"transition": 10000
}
编辑:我也将我的 JSON 更改为此,但我收到 500 错误
{
"transition": {
"id": "10000"
}
}
我得到的错误
{"errorMessages":["Can not instantiate value of type [simple type,classcom.atlassian.jira.rest.v2.issue.TransitionBean] from JSON integral number;no single-int-arg constructor/factory method (through reference chain:com.atlassian.jira.rest.v2.issue.IssueUpdateBean[\"transition\"])"]}400
我非常确信我的问题出在我的 json 文件中,因为我已多次在此代码段上方的代码中使用 GET,但我可能是错的。
是的,您是对的,JSON 是错误的,它甚至不是有效的 json,因为该值不是数字、字符串、对象或数组。文档说:
The fields that can be set on transtion, in either the fields parameter or the update parameter can be determined using the /rest/api/2/issue/{issueIdOrKey}/transitions?expand=transitions.fields resource.
因此您需要在 /rest/api/2/issue/{issueIdOrKey}/transitions?expand=transitions.fields
上执行获取请求以获取可能值的列表,然后在 json
{
"transition": {
"id" : "an_id_from_response"
}
}
我认为我遇到的问题是流程问题。我无法从打开的问题直接跳到 'completed'。但是,我可以从正在创建的问题转到 'Done'.
{
"transition": {
"name": "Done",
"id": "151"
}
}
因为这正是我所需要的,所以我会使用它。如果我找到如何完成票证,我会 post 返回。
此外,我认为我们自定义 JIRA 的事实导致我得到 'Completed' 作为有效转换,即使它不是。