Configuración de un servidor de pruebas con json-server

Para implementar un servidor RESTful de pruebas rápido con json-server, primero instalamos la dependencia del proyecto.

npm install json-server --save

Creamos el archivo principal del servidor, por ejemplo servidor.js:

const jsonServer = require('json-server');
const servidor = jsonServer.create();
servidor.listen(4000, () => {
    console.log('Servidor activo en puerto 4000');
});

Ejecutamos el servidor con Node.js:

node servidor.js

Para estructurar los datos de prueba, generamos un archivo datos/muestras.js con la siguiente configuración:

module.exports = () => {
    return {
        muestra: 'ejemplo',
        contenido: 'Datos de prueba para el servidor'
    };
};

Implementamos un controlador en controladores/muestras.js:

const obtenerDatos = require('../datos/muestras');

module.exports = (req, res) => {
    const informacion = obtenerDatos();
    informacion.descripcion = 'Información detallada de las muestras';
    res.json(informacion);
};

Definimos las rutas en rutas.js:

const controladorMuestras = require('./controladores/muestras');

module.exports = (aplicacion) => {
    aplicacion.use('/api/muestras', controladorMuestras);
};

Actualizamos el archivo princiapl para integrar el enrutamiento:

const jsonServer = require('json-server');
const servidor = jsonServer.create();
const enrutador = require('./rutas');

enrutador(servidor);

servidor.listen(4000, () => {
    console.log('Servidor activo en puerto 4000');
});

Para estandarizar las respuestas, agregamos un middleware en servidor.js:

const jsonServer = require('json-server');
const servidor = jsonServer.create();

servidor.use((req, res, siguiente) => {
    const enviarJson = res.json.bind(res);
    
    res.exitosa = (datos) => {
        return enviarJson({
            estado: 200,
            mensaje: 'Operación exitosa',
            datos
        });
    };
    
    res.error = (mensaje, datos) => {
        return enviarJson({
            estado: -1,
            mensaje,
            datos
        });
    };
    
    siguiente();
});

const enrutador = require('./rutas');
enrutador(servidor);

servidor.listen(4000, () => {
    console.log('Servidor activo en puerto 4000');
});

json-server también permite manejar endpoints RESTful cmopletos. Creamos un archivo de base de datos simulada en bd.js:

module.exports = () => {
    return {
        usuarios: [
            {
                id: 1,
                nombre: 'Juan Pérez',
                edad: 25
            },
            {
                id: 2,
                nombre: 'María García',
                edad: 32
            }
        ]
    };
};

Integramos la base de datos y el router nativo en servidor.js:

const jsonServer = require('json-server');
const servidor = jsonServer.create();
const enrutador = require('./rutas');
const datos = require('./bd');

servidor.use((req, res, siguiente) => {
    const enviarJson = res.json.bind(res);
    
    res.exitosa = (datos) => {
        return enviarJson({
            estado: 200,
            mensaje: 'Operación exitosa',
            datos
        });
    };
    
    res.error = (mensaje, datos) => {
        return enviarJson({
            estado: -1,
            mensaje,
            datos
        });
    };
    
    siguiente();
});

enrutador(servidor);
const routerREST = jsonServer.router(datos);
servidor.use('/api', routerREST);

servidor.listen(4000, () => {
    console.log('Servidor activo en puerto 4000');
});

Etiquetas: json-server Node.js REST API pruebas backend JavaScript

Publicado el 6-20 04:43