Skip to content

Rest

Rest — класс для вызовов Rest API платформы Аспро.Cloud. Singleton экземпляр доступен после инициализации Frame.

Автоматически управляет авторизацией (OAuth2) и ограничением частоты запросов (RateLimiter).

ts
import { Rest } from '@aspro-cloud/miniapp-jssdk'

Свойства

oauth2

Экземпляр OAuth2 для управления токенами авторизации

ts
get oauth2(): OAuth2

rateLimiter

Экземпляр RateLimiter для контроля частоты запросов

ts
get rateLimiter(): RateLimiter

Методы

getInstance

Возвращает текущий singleton экземпляр Rest. Вызывать только после инициализации Frame

ts
static getInstance(): Rest

call

Универсальный метод вызова Rest API, делегирующий выполнение методам get() или post() в зависимости от типа запроса

ts
async call(params: RestCallParams): Promise<any>
ПараметрТипОписание
paramsRestCallParamsПараметры запроса

destroy

Удаляет подписки и освобождает ресурсы

ts
destroy(): void

get

Выполняет GET запрос к Rest API для получения одной записи или списка записей. При получении списка поддерживает параметры пагинации, поиска и фильтрации

ts
async get(method: string, params?: RestGetParams): Promise<any>
ПараметрТипОписание
methodstringURL метода API, например '/core/user/list'
paramsRestGetParamsПараметры запроса: limit, page, search, fields, filter

post

Выполняет POST запрос к Rest API для создания, изменения или удаления записи

ts
async post(method: string, data?: RestPostData): Promise<any>
ПараметрТипОписание
methodstringURL метода API, например '/core/user/update/39'
dataRestPostDataДанные запроса

Пример

ts
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 }
})
js
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() доступна передача дополнительных параметров:

ПолеТипОписание
limitnumberМаксимальное количество записей отдаваемых на один запрос. По умолчанию 50, максимум 100
pagenumberНомер страницы результата запроса. По умолчанию 1
searchstringПоисковый запрос
fieldsstring[]Список полей, которые нужно вернуть в ответе
filterRestFilterМассив параметров для фильтрации получаемого списка записей
ts
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,
    },
  },
})

Опубликовано под лицензией MIT.