<< Click to Display Table of Contents >> Интеграция с внешними системами > Запросы к сервису интеграции POST-запросы к функциям |
Используйте POST-запросы, чтобы обратиться к функциям с атрибутом [Public(WebApiRequestType = RequestType.Post)].
Предположим, на слое в модуле Plans создана серверная функция:
[Public(WebApiRequestType = RequestType.Post)]
public void AddValue(string Name, double PlannedValue, double ActualValue)
{
// Создание записи в справочнике «Показатели».
var plan = Values.Create();
// Заполнение свойств записи справочника.
plan.Name = Name;
plan.PlannedValue = PlannedValue;
plan.ActualValue = ActualValue;
plan.Save();
}
Чтобы написать HTTP-запрос к этой функции:
1.Используйте URL в формате:
{Протокол https или http}://{имя сервера, на котором установлен сервис интеграции}/{имя сервиса интеграции}/odata/{Имя модуля}/{Имя функции}
https://DirectumRXServer.com/Integration/odata/Plans/AddValue
2.Укажите обязательные заголовки.
3.Передайте параметры функции в теле запроса, например:
{
"Name": "Оценка качества",
"PlannedValue": 4.0,
"ActualValue": 3.6
}
4.Проверьте, что соблюдены требования к значениям параметров. Если у функции нет параметров, оставьте тело пустым.
В результате получится запрос вида:
POST /Integration/odata/Plans/AddValue HTTP/1.1
Host: DirectumRXServer.com
Username: {логин пользователя}
Password: {пароль}
Content-Type: application/json
Accept: application/json
{
"Name": "Оценка качества",
"PlannedValue": 4.0,
"ActualValue": 3.6
}
Также запросы можно отправлять с помощью приложения, например консольного. Пример аналогичного запроса, написанного на языке 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);
// Создание запроса к функции c типом возвращаемого значения void.
var postRequestToFunction = await odataClient.For("Plans")
.Action("AddValue")
.Set(new { Name = "Оценка качества", PlannedValue = 4.0, ActualValue = 3.6 })
.ExecuteAsync();
В ответе сервис интеграции вернет код:
•200 – функция выполнилась успешно и возвращает какое-либо значение. В ответе будет информация о типе возвращаемого значения и само возвращаемое значение, например:
{
"@odata.context": "https://DirectumRXServer.com/odata/$metadata#Edm.Double"
"value": 11.2
}
•204 – функция выполнилась успешно, но не возвращает какое-либо значение (void);
•4хх – не удалось выполнить функцию. Номер кода зависит от ошибки. Например, если такой функции не существует, вернется код 404.
В описанном примере в ответе будет код 200.
© Компания Directum, 2024 |