如何通过 rest API 更新问题状态

本文关键字:更新 问题状态 API rest 何通过 | 更新日期: 2023-09-27 18:31:58

我想从 REST API 将问题状态更新为已完成或 true,我尝试了一些链接和文档,但它失败了并且不起作用,我的 JSON 数据和 URL 如下,请看一下并让我知道我错在哪里。

我点击此链接将问题状态更新为已完成。

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"}}}

我检查了小提琴手的响应,但在提琴手响应中出现以下错误。

{"错误消息":

["需要'字段'或'更新'之一"],"错误":{}}

之后,我更改了我的 JSON 数据,如下所示,这也不起作用,

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

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

{"errorMessages":["无法反序列化 java.util.Array START_OBJECT List 的实例,而不是 [来源: org.apache.catalina.connector.CoyoteInputStream@19d2e36;行: 1, 列: 12] (通过参考链: com.atlassian.jira.rest.v2.issue.IssueUpdateBean[''"update''"])"]}

它杀死了我大约 2.5 小时,请帮助我错在哪里?

如何通过 rest API 更新问题状态

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

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

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"
    }
}

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