Rest
Rest — класс для вызовов Rest API платформы Аспро.Cloud. Singleton экземпляр доступен после инициализации Frame.
Автоматически управляет авторизацией (OAuth2) и ограничением частоты запросов (RateLimiter).
import { Rest } from '@aspro-cloud/miniapp-jssdk'Свойства
oauth2
Экземпляр OAuth2 для управления токенами авторизации
get oauth2(): OAuth2rateLimiter
Экземпляр RateLimiter для контроля частоты запросов
get rateLimiter(): RateLimiterМетоды
getInstance
Возвращает текущий singleton экземпляр Rest. Вызывать только после инициализации Frame
static getInstance(): Restcall
Универсальный метод вызова Rest API, делегирующий выполнение методам get() или post() в зависимости от типа запроса
async call(params: RestCallParams): Promise<any>| Параметр | Тип | Описание |
|---|---|---|
params | RestCallParams | Параметры запроса |
destroy
Удаляет подписки и освобождает ресурсы
destroy(): voidget
Выполняет GET запрос к Rest API для получения одной записи или списка записей. При получении списка поддерживает параметры пагинации, поиска и фильтрации
async get(method: string, params?: RestGetParams): Promise<any>| Параметр | Тип | Описание |
|---|---|---|
method | string | URL метода API, например '/core/user/list' |
params | RestGetParams | Параметры запроса: limit, page, search, fields, filter |
post
Выполняет POST запрос к Rest API для создания, изменения или удаления записи
async post(method: string, data?: RestPostData): Promise<any>| Параметр | Тип | Описание |
|---|---|---|
method | string | URL метода API, например '/core/user/update/39' |
data | RestPostData | Данные запроса |
Пример
import { App, Rest } from '@aspro-cloud/miniapp-jssdk'
await App.initializeFrame()
const rest = Rest.getInstance()
// Получение списка пользователей
const users = await rest.get('/core/user/list', {
limit: 50,
fields: ['id', 'name']
})
// Получение текущего пользователя
const user = await rest.get('/core/user/get/')
// Получение пользователя по id
const user39 = await rest.get('/core/user/get/39')
// Изменение данных пользователя
await rest.post('/core/user/update/39', {
email_personal: 'neo@aspro.cloud',
})
// Универсальный вызов
const result = await rest.call({
type: 'get',
method: '/core/user/list',
params: { limit: 10 }
})const App = window.ACloudMiniApp
const frame = await App.initializeFrame()
// Получение списка пользователей
const users = await frame.rest.get('/core/user/list', {
limit: 50,
fields: ['id', 'name']
});
// Получение текущего пользователя
const user = await frame.rest.get('/core/user/get/');
// Получение пользователя по id
const user39 = await frame.rest.get('/core/user/get/39');
// Изменение данных пользователя
await frame.rest.post('/core/user/update/39', {
email_personal: 'neo@aspro.cloud',
});
// Универсальный вызов
const result = await frame.rest.call({
type: 'get',
method: '/core/user/list',
params: { limit: 10 }
});Пагинация, поиск и фильтрация списка записей
При получении списка записей через get() доступна передача дополнительных параметров:
| Поле | Тип | Описание |
|---|---|---|
limit | number | Максимальное количество записей отдаваемых на один запрос. По умолчанию 50, максимум 100 |
page | number | Номер страницы результата запроса. По умолчанию 1 |
search | string | Поисковый запрос |
fields | string[] | Список полей, которые нужно вернуть в ответе |
filter | RestFilter | Массив параметров для фильтрации получаемого списка записей |
import { App, Rest } from '@aspro-cloud/miniapp-jssdk'
await App.initializeFrame()
const rest = Rest.getInstance()
// Ограничение максимального количества записей в ответе до 100
const users = await rest.get('/core/user/list', {
limit: 100,
})
// Пагинация - вторая страница с 50 записями на странице (по умолчанию)
const usersSecondPage = await rest.get('/core/user/list', {
page: 2,
})
// Ограничение списка полей, которые нужно вернуть в ответе
const usersCompact = await rest.get('/core/user/list', {
fields: ['id', 'name']
})
// Поиск по строке
const usersBySearch = await rest.get('/core/user/list', {
search: 'neo',
})
// Фильтрация по значению поля
const usersByUsername = await rest.get('/core/user/list', {
filter: {
username: 'neo@aspro.cloud',
},
})
// Фильтрация по списку значений
const usersByIds = await rest.get('/core/user/list', {
filter: {
id: [39, 64],
},
})
// Фильтрация с исключением значений
const usersByExcludedIds = await rest.get('/core/user/list', {
filter: {
id: ['!39', '!64'],
},
})
// Фильтрация по времени
const tasksByUpdatedDate = await rest.get('/task/task/list', {
filter: {
updated_date: '2025-03-26 10:50:34',
},
})
// Фильтрация по временному промежутку
const tasksByDateRange = await rest.get('/task/task/list', {
filter: {
updated_date: {
start_date: '2025-01-01 00:00:00',
end_date: '2025-12-31 23:59:59',
},
},
})
// Фильтрация с точным совпадением
const tasksByExactId = await rest.get('/task/task/list', {
filter: {
id: {
type: 'exact_value',
value: 1550,
},
},
})
// Фильтрация с максимальным значением
const tasksWithMaxId = await rest.get('/task/task/list', {
filter: {
id: {
type: 'less',
value: 50,
},
},
})
// Фильтрация с минимальным значением
const tasksWithMinId = await rest.get('/task/task/list', {
filter: {
id: {
type: 'more',
value: 1550,
},
},
})
// Фильтрация с диапазоном значений
const tasksByIdRange = await rest.get('/task/task/list', {
filter: {
id: {
type: 'range',
start_value: 50,
end_value: 1550,
},
},
})