<< Click to Display Table of Contents >> Интеграция с внешними системами > Запросы к сервису интеграции Создание сущностей |
Чтобы создать сущность в Directum RX, используйте POST-запрос, в котором:
1.Укажите URL в формате:
{Протокол https или http}://{имя сервера, на котором установлен сервис интеграции}/{имя сервиса интеграции}/odata/{Интерфейс типа сущности во множественном числе}
2.Чтобы после выполнения запроса в ответе получить созданную сущность со свойствами типа Ссылка, Бинарные данные в хранилище, Бинарные данные, Картинка и Коллекция, добавьте в URL параметр $expand. Примеры URL:
•чтение цепочек из свойств-ссылок
•чтение свойств с типом «Бинарные данные в хранилище», «Бинарные данные» и «Картинка»
3.Укажите обязательные заголовки. Если не указать заголовки Content-Type и Accept, возникнет ошибка.
4.Добавьте дополнительный заголовок Return со значением minimal, чтобы в теле ответа не получать созданную сущность. Не добавляйте заголовок, если хотите узнать идентификатор созданной сущности.
Примечание. Если в URL запроса использован параметр $expand, то заголовок Return со значением minimal игнорируется и в ответе в любом случае возвращается созданная сущность.
5.В теле запроса передайте все обязательные свойства, которые не заполняются автоматически, и необходимые дополнительные свойства. Учтите особенности:
•чтобы заполнить свойство-ссылку, нужно чтобы объект, на который идет ссылка, уже существовал в системе. Подробнее см. раздел «Заполнение свойства-ссылки»;
•чтобы заполнить свойство-коллекцию, напишите отдельный POST-запрос. Подробнее см. раздел «Заполнение свойства-коллекции»;
•чтобы создать сущности, у которых есть обязательные свойства с типом Бинарные данные в хранилище и Коллекция, в среде разработки напишите функцию и используйте POST-запрос к ней.
6.Проверьте, что у названий свойств соблюдается регистр, а их значения написаны правильно. Например, некоторые нужно писать в кавычках, а некоторые нет.
В ответе сервис интеграции вернет код:
•201 – успешное выполнение запроса. В теле ответа будет созданная сущность;
•204 – успешное выполнение запроса, если в запросе был указан заголовок Return со значением minimal. В теле ответа не будет созданной сущности;
•400 – при выполнении запроса произошла ошибка, сущность создать не удалось. В теле ответа будет описание ошибки.
В заголовке ответа Location будет указан URL до созданной сущности.
Например, чтобы создать карточку простого документа (SimpleDocument), используйте запрос вида:
POST /Integration/odata/ISimpleDocuments HTTP/1.1
Host: DirectumRXServer.com
Username: {Логин}
Password: {Пароль}
Content-Type: application/json
Accept: application/json
Return: minimal
{
"Name":"Список детей сотрудников"
}
Запрос вернет код 204. В теле ответа будет пусто. В заголовке ответа Location будет значение:
https://DirectumRXServer.com/Integration/odata/ISimpleDocuments(12467)
Также запросы можно отправлять с помощью приложения, например консольного. Пример аналогичного запроса, написанного на языке 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 newSimpleDocument = await odataClient.For("ISimpleDocuments")
.Set(new { Name = "Список детей сотрудников" } })
.InsertEntryAsync();
Чтобы создать запись в справочнике «Сотрудник» (Employee), используйте запрос вида:
POST /Integration/odata/IEmployees?$expand=Person, Department HTTP/1.1
Host: DirectumRXServer.com
Username: {Логин}
Password: {Пароль}
Content-Type: application/json
Accept: application/json
Content-Length: 168
{
"Name":"Маркина Алена Лукинична",
"Person":{"Id": 1643},
"Department":{"Id": 96},
"Status":"Active",
"Email":"Markina_AL@companymail.ru"
}
Пример кода для создания аналогичного запроса:
// 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 newEmployeeProperties = new
{
Name = "Маркина Алена Лукинична",
Person = new { Id = 1643 },
Department = new { Id = 96 },
Status = "Active",
Email = "Markina_AL@companymail.ru"
};
var newEmployee = await odataClient.For("IEmployees")
.Set(new newEmployeeProperties)
.InsertEntryAsync();
Запрос вернет код 201. В теле ответа будет созданная сущность.
|
В заголовке ответа Location будет значение:
https://DirectumRXServer.com/Integration/odata/IEmployees(124)
© Компания Directum, 2024 |