Простое получение данных
https://demo.odant.org/api/H:1D3F682140A5840/P:WORK/B:1D40ECE5ADC0ED0/C:1D394FB232473D0/I:Pack?ssid=A53DBD1513F589C4A39769EF92BCC3BF&format=xml-standart
Это URL GET-запроса для получения данных. Разберем по частям.
- demo.odant.org — адрес сервера.
- H:1D3F682140A5840/P:WORK/B:1D40ECE5ADC0ED0/C:1D394FB232473D0/I:Pack — идентификатор Item’а (H – хост, P:WORK — домен, B — база (организация), C — класс, I:Pack – индекс, содержащий все данные в необработанном виде).
- ssid — идентификатор сессии пользователя.
- format — формат вывода данных (если не указывать, будет выдан JSON).
Общий вид GET-запроса:
https://demo.odant.org/api/<WebFullId>/I:Pack?ssid=<SSID>&format=xml-standart
Получение структуры данных
Используется GET-запрос следующего вида. Здесь WebFullID — идентификатор контекста (например, хоста, базы, класса).
https://demo.odant.org/api/<WebFullId>?method=get_config&ssid=<SSID>&format=xml-standart
В этом примере элементы D — домены (базы, рабочие места, модули), C — классы. Используются атрибуты:
- i — идентификатор;
- n — имя;
- l — отображаемая метка;
- t — тип;
- a — уровень доступа.
Создание класса
Используется POST-запрос следующего вида. WebFullID — идентификатор контекста, где необходимо создать класс.
https://demo.odant.org/api/<WebFullId>?method=create_class&ssid=<SSID>&format=xml-standart
В качестве тела запроса используем XML:
<CLASS Name="Api Test Creation" Label="Тестирование создания через API"> <METADATA> <ATTR Name="name" Label="Наименование" Type="Строка"/> <ATTR Name="date" Label="Дата" Type="ДатаВремя"/> <ATTR Name="Count" Label="Количество" Type="Число"/> <ATTR Name="Сотрудник" Label="Сотрудник" Type="H:1D3F682140A5840/D:WORK/D:1D40ECE5ADC0ED0/C:1D394FB2EC64BF0"/> </METADATA> </CLASS>
Name и Label – это имя и метка класса. Поля указываются в элементе METADATA, в котором создаются элементы ATTR для каждого поля. Можно указать имя (Name), метку (Label), тип (Type) поля. В качестве типа можно указать идентификатор класса.
Ответ на отправленный запрос и созданный класс:
<C a="6" i="1D41422E0BB9B70" n="Api Test Creation" l="Тестирование создания через API"/>
Получение данных по XQuery-запросу
Для выполнения XQuery-запроса к данным класса используется такой POST-запрос:
https://demo.odant.org/api/<WebFullId>/I:Pack?method=xquery&ssid=<SSID>&format=xml-standart
В его теле — непосредственно XQuery. Например, для получения объектов класса Сотрудники (H:1D3F682140A5840/P:WORK/B:1D40ECE5ADC0ED0/C:1D394FB2EC64BF0), атрибут ФИО которых содержит строку «Иванов»:
<x> {*/*[contains(@ФИО, "Иванов")]} </x>
Объекты будут получены как содержимое корневого элемента «x».
Сохранение данных
Для иллюстрации примера был предварительно создан класс TestSaveObject с полями:
- name (строка);
- date (дата и время);
- Count (число).
Для создания объекта класса применяется POST-запрос, здесь WebFullID — идентификатор класса TestSaveObject .
https://demo.odant.org/api/<WebFullID>&ssid=<SSID>?method=save_objects
Тело запроса может содержать XML:
<OBJECTS> <OBJECT name="Test" date="2018-03-23T10:00:00" Count="241141"/> </OBJECTS>
Или JSON:
{ "OBJECTS": { "OBJECT": { "name":"Test", "date":"2018-03-23T10:00:00", "Count":"241141" } } }
Тип содержимого пакета сервер определяет автоматически. Для сохранения данных в уже существующий объект достаточно добавить в тело пакета атрибут oid с идентификатором объекта. Результат добавления объекта:
Заключение
Мы привели простейшие примеры взаимодействия с API сервера ODANT для иллюстрации принципов. Подробная информация о том, как работать с API — в документации.