Saltar a contenido

Express JS

Express.js es un framework minimalista y flexible para Node.js que proporciona un conjunto robusto de características para desarrollar aplicaciones web y APIs. Es ampliamente utilizado debido a su simplicidad y extensibilidad. A continuación, se presenta una visión detallada de la teoría de operación de Express.js.

Teoría de Operación de Express.js

1. Arquitectura Basada en Middleware

Express utiliza un patrón de arquitectura basado en middleware, donde funciones intermedias (middleware) procesan peticiones y respuestas. Cada middleware puede modificar la petición y la respuesta o terminar el ciclo de petición/respuesta. Esto permite agregar funcionalidades de forma modular.

Estructura de un Middleware

Un middleware es una función que recibe tres parámetros: req (petición), res (respuesta) y next (una función que pasa el control al siguiente middleware).

const miMiddleware = (req, res, next) => {
  console.log('¡Petición recibida!');
  next(); // Llama al siguiente middleware
};

2. Instalación y Configuración

Para iniciar un proyecto con Express, necesitas instalar la librería y crear una instancia de la aplicación.

npm install express
const express = require('express');
const app = express();

3. Enrutamiento

Express permite definir rutas para diferentes endpoints de la aplicación. Las rutas pueden responder a diferentes métodos HTTP, como GET, POST, PUT y DELETE.

Ejemplo de Enrutamiento

app.get('/usuarios', (req, res) => {
  res.send('Lista de usuarios');
});

app.post('/usuarios', (req, res) => {
  res.send('Usuario creado');
});

4. Manejo de Peticiones y Respuestas

Express simplifica el trabajo con los objetos de petición y respuesta, permitiéndote acceder a los datos de la petición (como parámetros, cuerpo y encabezados) y enviar respuestas de forma fácil.

Acceso a Parámetros y Cuerpo de la Petición

app.get('/usuarios/:id', (req, res) => {
  const usuarioId = req.params.id; // Acceso a parámetros de la URL
  res.send(`Usuario con ID: ${usuarioId}`);
});

// Para manejar el cuerpo de la petición, es necesario usar un middleware como body-parser
app.use(express.json());
app.post('/usuarios', (req, res) => {
  const nuevoUsuario = req.body; // Acceso al cuerpo de la petición
  res.send(`Usuario creado: ${JSON.stringify(nuevoUsuario)}`);
});

5. Middleware

Los middlewares son esenciales en Express, permitiendo agregar funcionalidades como autenticación, manejo de errores, logging, entre otros.

Ejemplo de Middleware de Registro

app.use((req, res, next) => {
  console.log(`${req.method} ${req.url}`);
  next(); // Pasa al siguiente middleware
});

6. Manejo de Errores

Express permite definir middlewares específicos para el manejo de errores. Un middleware de error debe tener cuatro parámetros: err, req, res, y next.

Ejemplo de Middleware de Manejo de Errores

app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).send('¡Algo salió mal!');
});

7. Sirviendo Archivos Estáticos

Express puede servir archivos estáticos (como HTML, CSS y JavaScript) utilizando el middleware express.static.

Ejemplo de Servir Archivos Estáticos

app.use(express.static('public'));

8. Conexión con Bases de Datos

Express puede conectarse a bases de datos, como MongoDB, MySQL, etc., utilizando librerías apropiadas y middlewares para ejecutar operaciones CRUD.

const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/mibanco', { useNewUrlParser: true });

9. Aplicaciones en Tiempo Real

Express puede ser utilizado en conjunto con librerías como Socket.io para crear aplicaciones en tiempo real, permitiendo la comunicación bidireccional entre el cliente y el servidor.

10. Despliegue

Una aplicación de Express puede ser desplegada en diferentes entornos, como servidores dedicados, servicios en la nube (como Heroku, AWS) o contenedores de Docker, lo que la hace altamente flexible.