<< Click to Display Table of Contents >> Интеграция с внешними системами > Запросы к сервису интеграции GET-запросы к функциям |
Используйте GET-запросы, чтобы обратиться к функциям с атрибутом [Public(WebApiRequestType = RequestType.Get)].
Предположим, на слое в модуле Plans создана серверная функция:
[Public(WebApiRequestType = RequestType.Get)]
public virtual double SumFunction(double firstNumber, double secondNumber)
{
return firstNumber + secondNumber;
}
Чтобы написать HTTP-запрос к этой функции:
1.Используйте URL в формате:
{Протокол https или http}://{имя сервера, на котором установлен сервис интеграции}/{имя сервиса интеграции}/odata/{Имя модуля}/{Имя функции (параметры)}
https://DirectumRXServer.com/Integration/Plans/SumFunction(firstNumber=1.0, secondNumber=3.3)
2.Укажите обязательные заголовки.
3.Проверьте, что соблюдены требования к значениям параметров.
Важно. В GET-запросах параметры передаются в строке запроса, а не в теле.
В результате получится запрос вида:
GET /Integration/odata/Plans/SumFunction(firstNumber=1.0, secondNumber=3.3) 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 getRequestToFunction = await odataClient.For("Plans")
.Function("SumFunction")
.Set(new { firstNumber = 1.0, secondNumber = 3.3 })
.ExecuteAsSingleAsync();
В ответе сервис интеграции вернет код:
•200 – функция выполнилась успешно и возвращает какое-либо значение. В ответе будет информация о типе возвращаемого значения и само возвращаемое значение, например:
{
"@odata.context": "https://DirectumRXServer.com/odata/$metadata#Edm.Double"
"value": 11.2
}
•4хх – не удалось выполнить функцию. Номер кода зависит от ошибки. Например, если такой функции не существует, вернется код 404.
GET-запросы не возвращают код 204, так как их нельзя использовать для обращения к функциям c типом возвращаемого значения void. Подробнее см. раздел «Типы данных в функциях интеграции». В описанном примере ответ выглядит так:
{
"@odata.context": "https://DirectumRXServer.com/odata/$metadata#Edm.Double"
"value": 4.3
}
© Компания Directum, 2024 |