Skip to content

Latest commit

 

History

History
123 lines (90 loc) · 3.76 KB

File metadata and controls

123 lines (90 loc) · 3.76 KB

Express-Hooked

Express-Hooked es una potente extensión para Express.js que incorpora un sistema completo de hooks y filtros a tus aplicaciones. Inspirado en el sistema de hooks de WordPress, permite a los desarrolladores extender la funcionalidad en varios puntos del ciclo de vida de las solicitudes sin modificar el código central.

¿Por qué elegir Express-Hooked?

  • Arquitectura Flexible: Integra hooks en múltiples etapas del procesamiento de solicitudes
  • No Intrusivo: Extiende funcionalidad sin modificar código existente
  • Sistema de Prioridades: Controla el orden de ejecución con niveles de prioridad
  • Soporte de Espacios de Nombres: Organiza hooks con espacios de nombres para mejor mantenibilidad
  • Fácil Integración: Configuración simple con mínima configuración

Instalación

npm install express-hooked

Inicio Rápido

const express = require('express');
const ExpressHooked = require('express-hooked');

const app = express();
const port = 3000;

// Inicializar ExpressHooked
const expressHooks = new ExpressHooked(app);

// Registrar un hook de acción
expressHooks.addAction('request_started', (req, res, next) => {
  console.log(`Solicitud recibida: ${req.method} ${req.url}`);
  next();
});

// Registrar un hook de filtro
expressHooks.addFilter('modify_response_data', (data) => {
  return {
    ...data,
    processedBy: 'ExpressHooked',
    timestamp: new Date().toISOString()
  };
});

// Ruta de ejemplo usando filtros
app.get('/', (req, res) => {
  let responseData = { message: '¡Hola Mundo!' };
  responseData = expressHooks.applyFilters('modify_response_data', responseData);
  
  res.json(responseData);
});

// Inicializar integración de hooks
expressHooks.init();

app.listen(port, () => {
  console.log(`Servidor corriendo en http://localhost:${port}`);
});

Características Clave

Acciones

Las acciones permiten ejecutar código en puntos específicos sin modificar datos:

expressHooks.addAction('request_started', (req, res, next) => {
  // Haz algo cuando comienza la solicitud
  next();
});

Filtros

Los filtros permiten modificar los datos que fluyen a través de tu aplicación:

expressHooks.addFilter('modify_response_data', (data) => {
  // Modifica y devuelve los datos
  return { ...data, campoPersonalizado: 'valor' };
});

Sistema de Prioridades

Controla el orden de ejecución con niveles de prioridad (números más bajos se ejecutan primero):

// Esto se ejecuta primero (prioridad más alta)
expressHooks.addAction('request_started', callback, 5);

// Esto se ejecuta después (prioridad más baja)  
expressHooks.addAction('request_started', callback, 15);

Espacios de Nombres

Organiza tus hooks con espacios de nombres:

// Registrar hook con espacio de nombres
expressHooks.addAction('miplugin::before_request', callback);

// Ejecutar hook con espacio de nombres
expressHooks.doAction('miplugin::before_request', req, res);

Casos de Uso

  • Autenticación y Autorización: Integra hooks en el procesamiento de solicitudes para validar credenciales
  • Registro y Análisis: Realiza seguimiento de solicitudes, respuestas y métricas de rendimiento
  • Caché: Implementa estrategias de caché en diferentes niveles
  • Transformación de API: Modifica respuestas de API antes de enviarlas a los clientes
  • Manejo de Errores: Manejo centralizado de errores con lógica personalizada
  • Límites de Velocidad: Implementa límites de velocidad basados en criterios personalizados

Contribuciones

¡Agradecemos las contribuciones! Por favor, consulta nuestras pautas de contribución para obtener más información.

Licencia

Apache 2.0

Repositorio: https://gitlab.com/bytedogssyndicate1/express-hooked