Imagina que estás desarrollando una APP que consume un servicio que obtiene la geolocalización (Lat, Long) de una IP, por ejemplo IP-API:
http://ip-api.com/json/159.235.165.1
Normalmente tendremos llamadas limitadas o simplemente no queremos saturar el servicio con nuestras pruebas, lo ideal es crear un MOCK, se trata una de burla o imitación del servicio a consumir, para depurar nuestra APP. En este caso se implementara en JS con Node (debemos tener Node instalado):
Pasos:
- Crear un directorio para el proyecto Mock_IP-API, por ejemplo, y inicializar dentro de el npm e instalar express, para instalar todas las dependencias:
cd Mock_IP-API
npm init -y
npm install express
- Dentro del directorio del proyecto, crear una carpeta llamada «data», donde guardaremos los elementos Json que estamos burlando, estos elementos debemos obtenerlos del proveedor de la API, para ser lo más fieles a la realidad. en mi caso he utilizado 3 ip’s al azar
http://ip-api.com/json/159.235.165.1
Copiaremos varios de estos en archivos Json, dentro del directorio data y les pondremos como nombre la IP correspondiente, la estructura quedaría así:
- Ahora toca lo importante el servidor, el archivo server.js, crearemos server.js en la raíz del proyecto con este codigo:
const express = require('express');
const fs = require('fs');
const path = require('path');
const app = express();
const dataDirectory = path.join(__dirname, 'data');
app.get('/159.235.132.125', (req, res) => {
const loc1Data = fs.readFileSync(path.join(dataDirectory, '159.235.132.125.json'));
const loc1Json = JSON.parse(loc1Data);
res.json(loc1Json);
});
app.get('/159.235.165.1', (req, res) => {
const loc2Data = fs.readFileSync(path.join(dataDirectory, '159.235.165.1.json'));
const loc2Json = JSON.parse(loc2Data);
res.json(loc2Json);
});
app.get('/165.235.123.1', (req, res) => {
const loc3Data = fs.readFileSync(path.join(dataDirectory, '165.235.123.1.json'));
const loc3Json = JSON.parse(loc3Data);
res.json(loc3Json);
});
const port = 3000; // Puerto en el que se ejecutará el servidor
app.listen(port, () => {
console.log(`Servidor escuchando en el puerto ${port}`);
});
Inicialmente se realizan llamadas a las librerías requeridas, se indica que lea del directorio «data» y posteriormente se crean los servicios del API, donde se declara la URL, se obtiene el archivo correspondiente y se parsea. En la última parte del código, se define el puerto por el que escuchara el servicio.
- Iniciar server.js desde
node server.js
http://localhost:3000/159.235.132.125
http://localhost:3000/159.235.165.1
http://localhost:3000/165.235.123.1
Podéis descargar el código de Github:
https://github.com/jblazquezmartin/JS_MOCK_JSON/tree/main
Enjoy