<< Click to Display Table of Contents >> Интеграция с внешними системами > Запросы к сервису интеграции Получение сущностей |
Чтобы получать сущности, используйте GET-запросы. Например, в Directum RX есть тип справочника «Роль» – Sungero.CoreEntities.Roles. Чтобы получить список сущностей справочника, напишите GET-запрос, в котором укажите:
•URL в формате:
{Протокол https или http}://{имя сервера, на котором установлен сервис интеграции}/{имя сервиса интеграции}/odata/{Интерфейс типа сущности во множественном числе}
Пример:
https://DirectumRXServer.com/Integration/odata/IRoles
В результате получится запрос вида:
GET /Integration/odata/IRoles HTTP/1.1
Host: DirectumRXServer.com
Username: {логин пользователя}
Password: {пароль}
Content-Type: application/json
Accept: application/json
Также запросы можно отправлять с помощью приложения, например консольного. Пример аналогичного запроса, написанного на языке C# с использованием библиотеки Simple.OData.Client:
// URL сервиса интеграции.
private const string IntegrationServiceUrl = "https://DirectumRXServer.com/Integration/odata/";
// Логин для Basic-аутентификации.
private const string Login = "IntegrationUser";
// Пароль для Basic-аутентификации.
private const string Password = "11111";
// Настройки Simple OData Client: добавление ко всем запросам URL сервиса и
// заголовка с данными аутентификации.
var odataClientSettings = new ODataClientSettings(new Uri(IntegrationServiceUrl));
odataClientSettings.BeforeRequest += (HttpRequestMessage message) =>
{
var authenticationHeaderValue = Convert.ToBase64String(Encoding.UTF8.GetBytes($"{Login}:{Password}"));
message.Headers.Add("Authorization", "Basic " + authenticationHeaderValue);
};
var odataClient = new ODataClient(odataClientSettings);
// Создание запроса.
var getRequestToEntity = await odataClient.For("IRoles")
.FindEntriesAsync();
В ответе сервис интеграции вернет код:
•200 – успешное выполнение запроса. В теле ответа будет список сущностей запрашиваемого типа;
•204 – по запросу не найдено ни одной сущности;
•400 – при выполнении запроса произошла ошибка. В теле ответа будет ее описание. Например, если у пользователя, указанного в заголовке запроса, нет прав на чтение сущностей из запроса.
В описанном примере запрос вернет код 200 и список предопределенных ролей, созданных в системе.
|
Для чтения конкретного экземпляра сущности укажите его идентификатор (ИД):
https://DirectumRXServer.com/Integration/odata/IRoles(9)
Пример кода для создания аналогичного запроса:
// Создание запроса.
var getRequestToEntity = await odataClient.For("IRoles").Key(9)
.FindEntrуAsync();
В результате запрос вернет код 200. В теле ответа будут свойства запрашиваемой сущности.
|
По умолчанию в ответах нет свойств с типом Ссылка, Бинарные данные в хранилище, Бинарные данные, Картинка и Коллекция. Чтобы их получить, используйте параметр $expand. Для потоковой передачи бинарных данных используйте параметр $value. Подробнее см. разделы:
•чтение цепочек из свойств-ссылок
•чтение свойства с типом «Бинарные данные в хранилище», «Бинарные данные» и «Картинка»
Можно написать запрос, который вернет все сущности, созданные на основе одного базового типа, например, получить всех наследников от OfficialDocument. Особенности таких запросов см. в разделе «Чтение сущностей, созданных на основе одинаковых базовых типов».
Также в запросах можно использовать дополнительные параметры, чтобы фильтровать и сортировать возвращаемые данные.
© Компания Directum, 2024 |