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.
- 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
npm install express-hookedconst 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}`);
});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();
});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' };
});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);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);- 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
¡Agradecemos las contribuciones! Por favor, consulta nuestras pautas de contribución para obtener más información.
Apache 2.0
Repositorio: https://gitlab.com/bytedogssyndicate1/express-hooked