Пакетные вызовы.Call

Материал из Hivext Wiki

Перейти к: навигация, поиск

Содержание

Метод Call

Общая информация

Параметр Значение
Описание Вызов множества методов платформы за один запрос.
Адрес метода http://api.hivext.ru/1.0/utils/batch/{протокол}/call
Метод сервиса Пакетные вызовы

Параметры

Имя параметра Тип Описание
Входящие параметры
appid string [*] Идентификатор приложения.
request string [*] Пакетный запрос в формате JSON.
Свойство Описание
version Версия методов.
alias Сокращение имен методов и переменных. Сокращенное имя выбирается любым, а полное имя это название метода или параметра. Далее в global и methods можно использовать сокращенные имена. alias не обязательное свойство.
global Глобальные параметры общие для методов в секции methods. global не обязательное свойство.
methods Перечисление вызываемых методов и их параметров.

{

version : "версия сервиса",
alias : { сокращенное имя : полное имя, ... },
global : { имя параметра : значение параметра, ... },
methods : [
{ имя метода : { имя параметра : значение параметра, ... } },
...
]

}

sync boolean Синхронность выполнения методов.
true - методы в платформе вызовутся последовательно (синхронно), пока не выполнится предыдущий метод, следующий не начнет работу.
false - методы в платформе вызовутся непоследовательно (асинхронно, параллельно).

Параметр необязательный, по умолчанию sync = false. Асинхронный вызов в ряде случаев может выполняться быстрее синхронного, поэтому используйте синхронный вызов только в тех случаях когда это необходимо.

Возвращаемые параметры
result int Коды ошибок
1501 Неверный формат запроса
error string Описание ошибки, если она произошла.
response string Пакетный ответ в формате JSON. Порядок размещения ответов в response строго соответствует порядку вызовов методов в request.

[ { имя параметра : значение параметра, ... }, ... ]

Примеры

Асинхронный запрос

  • Взять количество объектов разных типов TypeA и TypeB за один запрос.

В данном случае вызовы метода GetObjectsCount не зависят от результатов друг друга. Поэтому лучше сделать асинхронный вызов (sync = false).
Request:

{

version : "1.0",
alias : { m : "Data.Base.GetObjectsCount" },
global : { appid : "1234567890ABCDEF", session : "1234567890" },
methods : [
{ m : { type : "TypeA" } },
{ m : { type : "TypeB" } } ]

}

Response:

[ { result : 0, count : 1000 }, { result : 0, count : 2000 } ]

Синхронный запрос

  • Создать роль (CreateRole);
  • Установить политику для роли (AddPolicy);
  • Применить роль ко всем пользователям (ApplyRole).

В данном случае нужно использовать синхронный вызов (sync = true), так как действия методов AddPolicy и ApplyRole зависят от завершения метода CreateRole (т.е. после того как роль будет создана).
Request:

{

version : "1.0",
global : { appid : "1234567890ABCDEF", session : "1234567890", role : "users" },
methods : [
{ "Security.AccessControl.CreateRole" : {} },
{ "Security.AccessControl.AddPolicy" : { object : "TypeA", rights : "create" } },
{ "Security.AccessControl.ApplyRole" : { subject : "*" } } ]

}

Response:

[ { result : 0 }, { result : 0 }, { result : 0 } ]
Личные инструменты