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).
import { Rest } from '@flowlu/miniapp-jssdk'Propiedades
oauth2
Instancia de OAuth2 para gestionar los tokens de autorización
get oauth2(): OAuth2rateLimiter
Instancia de RateLimiter para el control de la tasa de solicitudes
get rateLimiter(): RateLimiterMétodos
getInstance
Devuelve la instancia singleton actual de Rest. Llamar solo después de la inicialización de Frame
static getInstance(): Restcall
Método universal de llamada a la Rest API, que delega la ejecución a get() o post() según el tipo de solicitud
async call(params: RestCallParams): Promise<any>| Parámetro | Tipo | Descripción |
|---|---|---|
params | RestCallParams | Parámetros de la solicitud |
destroy
Elimina las suscripciones y libera los recursos
destroy(): voidget
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
async get(method: string, params?: RestGetParams): Promise<any>| Parámetro | Tipo | Descripción |
|---|---|---|
method | string | URL del método de la API, por ejemplo '/core/user/list' |
params | RestGetParams | Pará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
async post(method: string, data?: RestPostData): Promise<any>| Parámetro | Tipo | Descripción |
|---|---|---|
method | string | URL del método de la API, por ejemplo '/core/user/update/39' |
data | RestPostData | Datos de la solicitud |
Ejemplo
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 }
})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:
| Campo | Tipo | Descripción |
|---|---|---|
limit | number | Número máximo de registros por solicitud. El valor predeterminado es 50, el máximo es 100 |
page | number | Número de página del resultado de la solicitud. El valor predeterminado es 1 |
search | string | Consulta de búsqueda |
fields | string[] | Lista de campos que se devolverán en la respuesta |
filter | RestFilter | Arreglo de parámetros para filtrar la lista de registros |
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,
},
},
})