UNPKG

litepath

Version:

Microframework ligero para Node.js

82 lines (66 loc) 2.77 kB
// server.js (o index.js) // Este es el archivo principal de tu microframework LitePath // Aquí se configuran las rutas, middlewares y la conexión a MongoDB const LitePath = require('./litepath'); // Importa tu microframework const db = require('./db'); // Importa el módulo de conexión a MongoDB const app = new LitePath(); // Crea la instancia de tu microframework // ------------------------ // Middleware de logging // ------------------------ // Este middleware se ejecuta en cada petición y muestra en consola // el método HTTP y la ruta solicitada, junto con la fecha y hora app.use((req, res, next) => { console.log(`[${new Date().toISOString()}] ${req.method} ${req.path}`); next(); // Permite continuar con el siguiente middleware o ruta }); // ------------------------ // Rutas básicas // ------------------------ // Ruta principal: retorna un mensaje simple app.get('/', (req, res) => res.send('Hola mundo!')); // Ruta de prueba de error: lanza un error intencional para testear middleware de errores app.get('/error', (req, res) => { throw new Error('Error de prueba'); }); // Ruta POST de prueba: devuelve lo recibido en formato JSON app.post('/echo', (req, res) => { res.json({ recibido: req.body }); }); // ------------------------ // Rutas con base de datos MongoDB // ------------------------ // Ruta para obtener todos los usuarios desde la colección 'users' app.get('/users', async (req, res) => { try { // Conecta a la base de datos y obtiene la colección 'users' const database = await db.connect(); const users = await database.collection('users').find().toArray(); // Envía la lista de usuarios como respuesta JSON res.json(users); } catch (err) { // Manejo de errores de base de datos console.error('Error en /users:', err.message); res.statusCode = 500; res.json({ error: 'Error al consultar la base de datos' }); } }); // ------------------------ // Archivos estáticos // ------------------------ // Permite servir archivos estáticos desde la carpeta './public' // Ejemplo: imágenes, CSS, JS, etc. app.serveStatic('./public'); // ------------------------ // Middleware de manejo de errores // ------------------------ // Captura cualquier error que ocurra en rutas o middlewares anteriores app.use((err, req, res, next) => { console.error('Middleware de error:', err.message); res.statusCode = 500; res.json({ error: '¡Ocurrió un error!' }); }); // ------------------------ // Inicialización del servidor // ------------------------ // Inicia el servidor en el puerto 3000 app.listen(3000, () => console.log('Servidor en http://localhost:3000'));