Primeros Pasos

En esta sección veremos cómo interactuar con la API de Torre de Control. La API expone para cada recurso un set de operaciones REST para obtener, actualizar y eliminar elementos.


Paginado

Los recursos que disponen de GET /:id devuelven un JSON con la data del objeto solicitado en el primer nivel. Los recursos que disponen de GETsin id como path param, devolverán una cantidad de 100 items por defecto con el siguiente contrato:

{
  "meta": {
    "total": 50,
    "totalPages": 5,
    "limit": 10,
    "page": 1
  },
  "data": [
    // Array de elementos
    {
      "id": 1,
      // .../rest
    },
  ]
}

Integraciones

1. URL Base de la API

La API se encuentra en la siguiente URL base:

https://stork-test.quadminds.com/apis/stork-api

2. Endpoint para Obtener Datos Paginados con Filtros

Endpoint:

GET /trips

Parámetros de Consulta:

  • page: Número de página (opcional, por defecto es 1).
  • limit: Número de elementos por página (opcional, por defecto es 10).
  • filters: Objeto de filtros en formato JSON según el parser de consultas de Mongoose (opcional).

Ejemplo de Uso:

const apiService = require('./apiService'); // Tu implementación

async function obtenerViajesPaginados(page = 1, limit = 10, filters = {}) {
    try {
        const params = {
            page,
            limit,
            filters: JSON.stringify(filters),
        };

        const data = await apiService.fetchData('trips', params);

        // Manejar la respuesta, por ejemplo, imprimir los resultados
        console.log('Meta:', data.meta);
        console.log('Datos:', data.data);

        return data;
    } catch (error) {
        console.error('Error al obtener datos:', error.message);
    }
}

// Ejemplo de llamada
obtenerViajesPaginados(1, 10, { carrier: 'MONGO-OBJECT-ID' });

3. Respuesta de la API

La API devuelve un objeto que contiene dos propiedades:

Objeto Meta:

  • total: Total de elementos disponibles.
  • totalPages: Número total de páginas.
  • limit: Número de elementos por página.
  • page: Número de la página actual.

Objeto Data:

  • data: Array de elementos que cumplen con los filtros y la paginación.

Ejemplo de Respuesta:

{
  "meta": {
    "total": 50,
    "totalPages": 5,
    "limit": 10,
    "page": 1
  },
  "data": [
    // Array de elementos
    {
      "id": 1,
      "tripCode": "123456"
    },
    // Otros elementos...
  ]
}

4. Ejemplos de Filtros

Los filtros se pueden especificar utilizando el objeto filters en la consulta. Por ejemplo, para buscar elementos que tengan un campo específico:

// Buscar viajes con el campo "tripCode" igual a "123456"
obtenerViajesPaginados(1, 10, { tripCode: '123456' });