Как обновить статус проблемы, как это было сделано через остальные API?

я хочу обновить статус проблемы как выполненный или истинный из остальных API, я пробовал некоторые ссылки и документацию, но это не удалось и не сработало, мои данные 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"}}}

Я проверил ответ скрипача, но получил следующую ошибку в ответе скрипача.

{"errorMessages":["одно из "полей" или "обновление" требуется"],"ошибки":{}}

после этого я изменил свои данные json следующим образом, и это также не сработало,

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

а затем я увидел ошибку в скрипке следующим образом.

{"errorMessages":["Невозможно десериализовать экземпляр java.util.ArrayList из токена START_OBJECT\n в [Источник: org.apache.catalina.connector.CoyoteInputStream@19d2e36; строка: 1, столбец: 12] (через цепочку ссылок: com.atlassian.jira.rest.v2.issue.IssueUpdateBean[\"update\"])"]}

это убило мои 2,5 часа, пожалуйста, помогите, где я ошибаюсь?


person Ashish-BeJovial    schedule 26.11.2014    source источник


Ответы (1)


Я использовал неправильный подход: для установки статуса выполнения проблемы Jira вам нужно отправить два запроса на сервер (1) Получить запрос, который вернет идентификатор транзакции для проблемы. (2) Отправив запрос на сервер с помощью идентификатора транзакции, вы можете сделать проблему выполненной, я пытаюсь продемонстрировать следующее.

(1) Отправьте запрос на получение на сервер JIRA со следующим URL-адресом (тот же URL-адрес будет использоваться для запроса 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, этот идентификатор будет использоваться для запроса POST, для меня я создал JSON следующим образом и теперь (2) отправьте запрос POST через тот же URL-адрес, что и выше .

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

для меня свойство fields не требовалось, поэтому я могу обновить статус проблемы как выполненный. :)

person Ashish-BeJovial    schedule 27.11.2014
comment
Эй, я использовал этот код для обновления статуса проблемы, но я получаю внутреннюю ошибку сервера. Не могли бы вы помочь? - person Bhakti Kulkarni; 13.04.2017
comment
спасибо, это работает, как и ожидалось, принятая полезная нагрузка перехода JSON выглядит так: "transition": { "id": "25" } если нет, то будет что-то вроде: { "errorMessages": [ "Missing 'transition' identifier" ], "errors": {} } - person Fathur Hidayat; 05.04.2021