Пакетные вызовы.Call
Материал из Hivext Wiki
Содержание |
Метод Call
Общая информация
| Параметр | Значение |
|---|---|
| Описание | Вызов множества методов платформы за один запрос. |
| Адрес метода | http://api.hivext.ru/1.0/utils/batch/{протокол}/call |
| Метод сервиса | Пакетные вызовы |
Параметры
| Имя параметра | Тип | Описание | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Входящие параметры | ||||||||||||
| appid | string | [*] Идентификатор приложения. | ||||||||||
| request | string | [*] Пакетный запрос в формате JSON.
{
} | ||||||||||
| sync | boolean | Синхронность выполнения методов.
Параметр необязательный, по умолчанию sync = false. Асинхронный вызов в ряде случаев может выполняться быстрее синхронного, поэтому используйте синхронный вызов только в тех случаях когда это необходимо. | ||||||||||
| Возвращаемые параметры | ||||||||||||
| result | int | Коды ошибок
| ||||||||||
| 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 } ]
