Skip to content

Rest

Rest — clase para realizar llamadas a la Rest API de la plataforma Flowlu. La instancia singleton está disponible después de la inicialización de Frame.

Gestiona automáticamente la autorización (OAuth2) y la limitación de tasa de las solicitudes (RateLimiter).

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

Propiedades

oauth2

Instancia de OAuth2 para gestionar los tokens de autorización

ts
get oauth2(): OAuth2

rateLimiter

Instancia de RateLimiter para el control de la tasa de solicitudes

ts
get rateLimiter(): RateLimiter

Métodos

getInstance

Devuelve la instancia singleton actual de Rest. Llamar solo después de la inicialización de Frame

ts
static getInstance(): Rest

call

Método universal de llamada a la Rest API, que delega la ejecución a get() o post() según el tipo de solicitud

ts
async call(params: RestCallParams): Promise<any>
ParámetroTipoDescripción
paramsRestCallParamsParámetros de la solicitud

destroy

Elimina las suscripciones y libera los recursos

ts
destroy(): void

get

Realiza una solicitud GET a la Rest API para obtener un único registro o una lista de registros. Al obtener una lista, admite parámetros de paginación, búsqueda y filtrado

ts
async get(method: string, params?: RestGetParams): Promise<any>
ParámetroTipoDescripción
methodstringURL del método de la API, por ejemplo '/core/user/list'
paramsRestGetParamsParámetros de la solicitud: limit, page, search, fields, filter

post

Realiza una solicitud POST a la Rest API para crear, actualizar o eliminar un registro

ts
async post(method: string, data?: RestPostData): Promise<any>
ParámetroTipoDescripción
methodstringURL del método de la API, por ejemplo '/core/user/update/39'
dataRestPostDataDatos de la solicitud

Ejemplo

ts
import { App, Rest } from '@flowlu/miniapp-jssdk'

await App.initializeFrame()

const rest = Rest.getInstance()

// obtener la lista de usuarios
const users = await rest.get('/core/user/list', {
  limit: 50,
  fields: ['id', 'name']
})

// obtener el usuario actual
const user = await rest.get('/core/user/get/')

// obtener usuario por id
const user39 = await rest.get('/core/user/get/39')

// actualizar los datos del usuario
await rest.post('/core/user/update/39', {
  email_personal: '[email protected]',
})

// llamada universal
const result = await rest.call({
  type: 'get',
  method: '/core/user/list',
  params: { limit: 10 }
})
js
const App = window.FlowluMiniApp;

const frame = await App.initializeFrame();

// obtener la lista de usuarios
const users = await frame.rest.get('/core/user/list', {
  limit: 50,
  fields: ['id', 'name']
});

// obtener el usuario actual
const user = await frame.rest.get('/core/user/get/');

// obtener usuario por id
const user39 = await frame.rest.get('/core/user/get/39');

// actualizar los datos del usuario
await frame.rest.post('/core/user/update/39', {
  email_personal: '[email protected]',
});

// llamada universal
const result = await frame.rest.call({
  type: 'get',
  method: '/core/user/list',
  params: { limit: 10 }
});

Paginación, búsqueda y filtrado

Al obtener una lista de registros mediante get(), están disponibles parámetros adicionales:

CampoTipoDescripción
limitnumberNúmero máximo de registros por solicitud. El valor predeterminado es 50, el máximo es 100
pagenumberNúmero de página del resultado de la solicitud. El valor predeterminado es 1
searchstringConsulta de búsqueda
fieldsstring[]Lista de campos que se devolverán en la respuesta
filterRestFilterArreglo de parámetros para filtrar la lista de registros
ts
import { App, Rest } from '@flowlu/miniapp-jssdk'

await App.initializeFrame()

const rest = Rest.getInstance()

// limitar el número máximo de registros en la respuesta a 100
const users = await rest.get('/core/user/list', {
  limit: 100,
})

// paginación: segunda página con 50 registros por página (por defecto)
const usersSecondPage = await rest.get('/core/user/list', {
  page: 2,
})

// limitar la lista de campos a devolver en la respuesta
const usersCompact = await rest.get('/core/user/list', {
  fields: ['id', 'name']
})

// búsqueda por cadena
const usersBySearch = await rest.get('/core/user/list', {
  search: 'neo',
})

// filtrar por valor de campo
const usersByUsername = await rest.get('/core/user/list', {
  filter: {
    username: '[email protected]',
  },
})

// filtrar por una lista de valores
const usersByIds = await rest.get('/core/user/list', {
  filter: {
    id: [39, 64],
  },
})

// filtrar con exclusión de valor
const usersByExcludedIds = await rest.get('/core/user/list', {
  filter: {
    id: ['!39', '!64'],
  },
})

// filtrar por tiempo
const tasksByUpdatedDate = await rest.get('/task/task/list', {
  filter: {
    updated_date: '2025-03-26 10:50:34',
  },
})

// filtrar por rango de tiempo
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',
    },
  },
})

// filtrar con coincidencia exacta
const tasksByExactId = await rest.get('/task/task/list', {
  filter: {
    id: {
      type: 'exact_value',
      value: 1550,
    },
  },
})

// filtrar con valor máximo
const tasksWithMaxId = await rest.get('/task/task/list', {
  filter: {
    id: {
      type: 'less',
      value: 50,
    },
  },
})

// filtrar con valor mínimo
const tasksWithMinId = await rest.get('/task/task/list', {
  filter: {
    id: {
      type: 'more',
      value: 1550,
    },
  },
})

// filtrar con rango de valores
const tasksByIdRange = await rest.get('/task/task/list', {
  filter: {
    id: {
      type: 'range',
      start_value: 50,
      end_value: 1550,
    },
  },
})

Publicado bajo la licencia MIT.