Запрос к LINQ


Метод: api/queries/get

Запрос

После авторизации отправляется запрос непосредственно к LINQ, используя ключ источника (DataSourceKey):

POST http://localhost/api/queries/get
{ 
    DataSourceKey: "my_query_1",
    Parameters: { A: 123, B: "321" },
    PageSize: 20
}

Или Id LINQ-запроса (DataSourceId):

POST http://localhost/api/queries/get
{ 
    DataSourceId: "54d198c3-bbd9-4812-9143-76c632a80e44",
    Parameters: { A: 123, B: "321" },
    PageSize: 20
}

Параметры:

  • Parameters - передаваемые в LINQ-запрос параметры (необязательное);
  • PageSize - максимальное количество первых по порядку возвращаемых из запроса записей (необязательное, но если не указано - всегда возвращаются только первые 10 записей из результатов выполнения запроса).

Обращение к данным системы с текстом LINQ-запроса (Text) непосредственно в вызове метода:

POST http://localhost/api/queries/get
{ 
    Text: 'var a = (long)parameters["A"];
    var b = parameters.GetValue<string>("B");
    return dataContext.Zadacha_2b33fa_List
   .Select(z => new { z.Name });',
    Parameters: { A: 123, B: "321" },
    PageSize: 100
}

Ответ

В области ответа появится JSON, содержащий результат LINQ-запроса, представленный в формате JSON:

[
    {
        "Id": "96e78600-66a7-4912-8ddb-1a6ab01c3918",
        "Name": "Управление идеями"
    },
    {
        "Id": "9aec681c-268f-4ec9-bd32-4ad69d1085c2",
        "Name": "На рассмотрении"
    },
    {
        "Id": "63535df0-9e6d-4dc7-ad81-27d4f7978841",
        "Name": "В архиве"
    },
 
   ...
]

Пример вызова метода

Пример вызова в PowerShell

$baseAddress = New-Object -TypeName Uri -ArgumentList $urlA2
$cookieContainer = New-Object -TypeName System.Net.CookieContainer
 
$handler = New-Object -TypeName System.Net.Http.HttpClientHandler
$handler.CookieContainer = $cookieContainer
 
$client = New-Object -TypeName System.Net.Http.HttpClient -ArgumentList $handler
$client.BaseAddress = $baseAddress
$encoding = [System.Text.Encoding]::GetEncoding("utf-8")
 
# Запрос выполняется после успешной авторизации
 
# Запрос
$query = @{
  'DataSourceId' = $DataSourceId
  'PageSize' = 1000
} | ConvertTo-Json
$queryResponse = $client.PostAsync(
			 [string]::Join('/', $urlA2, "api/queries/get"), 
                         (New-Object -TypeName System.Net.Http.StringContent -ArgumentList $query, $encoding,"application/json"))
 
$queryResponseResult = $queryResponse.Result.Content.ReadAsStringAsync()
 
# Результат Linq запроса
$result = $queryResponseResult.Result | ConvertFrom-Json

Пример вызова в Python

import requests
 
# должна быть выполнена авторизация и cookies сессии сохранены в переменной cookies = session.cookies.get_dict()
 
# при необходимости, указывайте протокол https в строке с реальным адресом домена системы. 
# после адреса домена может быть указан еще и каталог размещения системы на домене (например, https://domain.example.ru/Master )
DOMAIN = 'http://xxxxx' 
 
session = requests.Session()
 
# параметры для обращения к LINQ-запросу (может быть больше, см. выше)
LINQ = {
    'DataSourceId': "6b7c0388-a249-4d39-9cb6-xxxxxxxxxxx", # id LINQ-запроса в системе ADVANTA
    'PageSize': 100, # максимальное количество возвращаемых записей
}
 
# получение данных из LINQ-запроса
response = session.post(
    url = DOMAIN + '/api/queries/get', 
    cookies = cookies, 
    json = LINQ,
)
 
data = response.json()