REST API ABAP на примере интеграции с JIRA

REST API ( Representational State Transfer ) – архитектурный стиль для передачи данных в распределенных сетевых приложениях. REST не имеет какого-то одного стандарта, но при этом должны соблюдаться имеет основные принципы:
1. Архитектура клиент-сервер;
2. Единый интерфейс;
3. Отсутствие состояния между запросами;
4. Кешируемость;
5. Слои;
6. Код по требованию;

Думаю, что более полно о Rest API можно почитать в советующей литературе. Нет смысла копипастить это с других сайтов. Мы же
рассмотрим прикладную задачу по получению данных из внешних систем при помощи REST API. Для примера будем общаться с популярной сегодня системой JIRA

Первоначально нам потребуется настроить соединение:

  1. Переходим в транзакцию SM59;

2. Нажимаем создать обратите внимание на «Тип соединения» в данном случае должен быть G – HTTP – связь с внешним сервером;

3. На вкладке Технические параметры вводим вводим хост и порт

4. Вводим данные пользователя в целевой системе

5. Указываем дополнительные настройки:

Обратите внимание, что в вашем случае настройки могут отличаться.

Далее надо немного покодить. Для обмена данными необходимо создать клиент. 
Создаем объект:

Определяемся с тем, что мы хотим сделать. От этого зависит тип запроса.
GET   - получение данных
PUT   - обновление данных
POST – создание
DELETE – удаление

Примеры работы с Jira API  


Получение данных задачи

В переменной ls_status – получаем статус запроса. На его основе можем сделать вывод о наличии или отсутствии ошибки.

В переменной lv_response получаем ответ в JSON формате со всеми данными страницы, его надо десериализовать . Если кратко, то используем класс  /ui2/cl_json или подобный. 

Получение данных Remote Issue Links (удаленных ссылок) - тот же самый GET запрос, но с небольшим дополнением:

Получение комментариев задачи
По умолчанию JIRA API не отдает поля не участвующие в поиске, для этого надо сделать GET запрос:

Но в моем случае такое не сработало. Пришлось для получения комментариев, использовать такой запрос:

 

Изменение поля на странице Jira

Следующим этапом будет изменение поля на странице Jira. Примечание: для этого надо чтобы поле было отображено на странице, иначе возвращает ошибку.
Используем PUT запрос
Страница с примерами
В общем случае JSON выглядит следующим образом:

У нас поле простое, поэтому вот так:

Создание подзадачи в Jira

Используем POST запрос
Делаем сериализацию. В структуре ls_subtask_data – вся информацию о создаваемой задаче

Смена статуса задачи Jira

Со статусами есть особенность, мы не можем их менять в произвольном порядке. Все статусы двигаются по статусной схеме. Поэтому иногда полезно получить список возможных переходов и уже после 
Work with issue workflows | Atlassian Support

Немного меняется адрес. В данном случае от выглядит так /rest/api/2/issue/ХХХХ-YYYY/transitions
Для поиска всех возможных переходов выполним следующий GET запрос

Получим подобный ответ со списком статусов:

Для смены статуса используем POST запрос 

/rest/api/2/issue/XXXXX-YYYY/transitions

{ "transition": { "id": "NN" } } - где NN - ID нашей операции. 








 

Добавить комментарий

Ваш адрес email не будет опубликован.