如何通过rest api更新问题状态?

时间:2014-11-26 10:16:12

标签: c# jira fiddler jira-rest-api

我想从其余的api更新问题状态为完成或真实,我尝试了一些链接和文档,但它失败了并且没有用,我的json数据和网址正在关注,请看看,让我知道我在哪里我错了。

我按照此link将问题状态更新为已完成。

jQuery.ajax({
    url :'https://myurl.com/rest/api/latest/issue/10635',
    type: 'PUT',
    beforeSend : function(xhr) {
           xhr.setRequestHeader("Authorization", "Basic " + 'QXNjiYIklOZvcxlxhZ3NodXNldA==');
    },
    data: JSON.stringify({"status":{"id":"10635","name":"done"}}}),
    dataType: 'json',
    contentType:'application/json; charset=utf8',
    success: function(data){
    console.log(data);
    }
})

我的json正在关注

{"status":{"id":"10635","name":"done"}}}

我检查了小提琴手上的回复,但我在小提琴响应中收到了以下错误。

{" errorMessages":["其中一个'字段'或者'更新'所需&#34],"错误":{}}

之后我改变了我的json数据如下并且也没有用,

{"update":{"status":{"id":"10635","name":"done"}}}

然后我看到了小提琴中的错误如下。

{" errorMessages":["无法在[来源:org.apache.catalina.connector.CoyoteInputStream]的START_OBJECT令牌中反序列化java.util.ArrayList实例@ 19d2e36; line:1,column:12](通过引用链:com.atlassian.jira.rest.v2.issue.IssueUpdateBean [\" update \"])"]}

它杀了我2.5小时左右,在我错的地方帮忙?

1 个答案:

答案 0 :(得分:1)

我使用了错误的方法,将状态设置为Jira问题已完成,您必须向服务器发送两个请求(1)获取请求,该请求将返回问题的事务ID。 (2)在事务ID的帮助下向服务器发布请求可以使问题完成,我尝试演示以下内容。

(1)使用以下网址向JIRA服务器发送获取请求(相同的网址将用于POST请求)。

https://mycompany.com/rest/api/2/issue/{issueidORkey}/transitions?expand=expand.fields

它会将以下类型的细节返回到json模式。

{
"expand": "transitions",
   "transitions": [
       {
          "id": "25",
          "name": "Start Progress",
          "to": {
              "self": "https://mycompany.com/rest/api/2/status/3",
              "description": "This issue is being actively worked on at the moment by the                  assignee.",
              "iconUrl": "https://mycomapny.com/images/icons/statuses/inprogress.png",
              "name": "In Progress",
              "id": "3",
              "statusCategory": {
                   "self": "https://mycompany.com/rest/api/2/statuscategory/4",
                   "id": 4,
                   "key": "indeterminate",
                   "colorName": "yellow",
                   "name": "In Progress"
                }
          }
    }
}

如上所述,您可以看到有过渡 - > id = 25,这个id将用于POST请求,对于我,我创建了JSON,如下所示 (2)通过我上面使用的相同URL发送POST请求。

    {
    "update": {
        "comment": [{
            "add": {
                "body": "Comment body"
            }
        }]
    },
    "fields": {},
    "transition": {
        "id": "25"
    }
}

对于我来说字段属性不是必需的,所以我能够将问题状态更新为已完成。 :)