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 Демонстрация получения данных НСИ.