7.2 Запрос справочников НСИ через REST API

С помощью API «Портала ГосЭДО» можно получить данные справочников версии НСИ, установленной на «Портале ГосЭДО» на момент запроса.

Данные НСИ могут быть запрошены двумя способами.

Способ 1

Для отправки команды посредством POST необходимо использовать адрес "http://server-url/api/constructor", где «server-url» - URL-адрес доступа к используемому экземпляру «Портала ГосЭДО». Команда передается в параметре «action».

Команда: getRefs

Действие:

Возвращает 3 справочника (видов взаимодействий, событий и электронных документов) установленной версии НСИ.

Возвращаемый результат:

Возвращает данные в формате json с массивами:

  • InformationInteractionsTypes ([массив]) — содержимое справочника НСИ Cat01-002-00003 «Виды информационных взаимодействий о процессе»;
  • InformationInteractionsEvents ([массив]) — содержимое справочника НСИ Cat01-002-00006 «Виды событий»;
  • ElectronicDocumentsTypes ([массив]) — содержимое справочника НСИ Cat01-002-00002 «Виды электронных документов».

Пример вызова в консоли:

curl 'http://10.77.142.21:84/api/constructor' -H 'Content-Type: application/json' -d '{"action": "getRefs"}'

Пример вызова в Javascript:

<!--- REST API Портала ГосЭДО: сервисы для цифровых документов -->
<!--- Для вызова используется REST API http://server-url/#/constructor-->
<script>
    async function fetchAdapterService(myAction, myKey, myValue, saveAsFile, mySession = 'NONE') { 
        // Пример адреса для обращения к сервису НСИ, если Портал ГосЭДО доступен по IP 10.77.142.21:84 
        RESTAPIURL = 'http://10.77.142.21:84/api/constructor';
        const formData = new FormData();
        formData.append('action', myAction);
        if (mySession != 'NONE') formData.append('session_id', mySession);
        var object = {};
        formData.forEach(function(value, key) {
            object[key] = value;
        });
        const response = await fetch(RESTAPIURL, {
            method: 'POST',
            body: formData
        }).
        catch((error) = >{});
        if (response.status == 200) { 
            //Присвоение в переменную file ответа 
            let file = await response.blob();
            let link = document.createElement("a");
            link.href = window.URL.createObjectURL(file);
            link.download = saveAsFile;
            link.click();
        }
    }
</script>
<!--REST API Портала ГосЭДО: регистрация цифрового документа из файла XML во внутреннем модуле Портала ГосЭДО-->
<script>
    // функция, которая выполняется при нажатии кнопки  
    async function getNSI()  {
        //передача параметров в функцию fetchAdapterService: 
        //Команда: getRefs 
        //сохранить результат как response.json 
        fetchAdapterService('getRefs', '', '', 'response.json');
    }
</script>
<!-- кнопка для инициации запроса справочников НСИ-->
<button onclick="getNSI()"> Получить НСИ </button>

Способ 2

Для отправки команды посредством POST необходимо использовать адрес "http://server-url/api/nsi-reference", где «server-url» - URL-адрес доступа к используемому экземпляру «Портала ГосЭДО». Команда передается в параметре «action».

Команда: gettableItems

Действие:

Возвращает данные справочников НСИ, доступных в разделе «Справочники НСИ» Программы на момент запроса.

Возвращаемый результат:

Возвращает данные в формате json, которые включают массив tableItems с информацией о справочниках НСИ, доступных в разделе «Справочники НСИ» Программы на момент запроса.

Параметры (для отбора с фильтрацией и делением по страницам):

sort: {id: 'asc'}
filter: {id: 'Cat01-001-00001', }
paginator: {page: 1, limit: 3}

Пример вызова в Javascript:

<script>
    async function fetchAdapterService(endpoint, myAction, myParams, saveAsFile = 'NONE') {
        let address = document.querySelector('#address');
        RESTAPIURL = 'http://10.77.142.21:84/' + endpoint;
        myParams['action'] = myAction;
        if (myParams['xml']) {
            var formData = new FormData();
            Object.entries(myParams).forEach(function([key, value]) {
                formData.append(key, value);
            });
            var REQUEST = {
                method: 'POST',
                body: formData,
            }
        } else {
            var REQUEST = {
                method: 'POST',
                body: JSON.stringify(myParams),
                headers: {'Content-Type': 'application/json'},
            }
        }
        const response = await fetch(RESTAPIURL, REQUEST).
        catch((error) =>{});
        const fileName = ((saveAsFile == 'NONE') ? 'response.json': saveAsFile);
        if (response.status == 200) {
            let file = await response.blob();
            let link = document.createElement("a");
            link.href = window.URL.createObjectURL(file);
            link.download = fileName;
            link.click();
        }
    }
</script>
<!------------ REST API Портала ГосЭДО: получение НСИ -->
<script>
    async function getNSI() {
        myParams = {
            sort: {id: 'asc'},
            filter: {id: 'Cat01-001-00001', },
            paginator: {page: 1, limit: 3 },
        }
        fetchAdapterService('/api/nsi-reference', 'gettableItems', myParams, 'get-nsi.json');
    }
</script>
<button class="header2" onclick="getNSI()"> Получить данные НСИ </button>

С выполнением демонстрационного примера по описанной функции можно ознакомиться в разделе 4.12 Демонстрация получения данных НСИ.

Последнее изменение: Friday, 12 July 2024, 16:33