S42-Core RouteControllers Clase
Documentación de RouteControllers
La clase RouteControllers
es parte del paquete s42-core
y está diseñada para gestionar y enrutar solicitudes HTTP de manera eficiente. Funciona perfectamente junto con la clase Controller
para manejar rutas, middlewares y métodos HTTP de forma dinámica.
Usar RouteControllers
sin la clase Controller
no tiene sentido práctico, ya que depende completamente de las instancias de Controller
para definir y gestionar la lógica de enrutamiento.
Propósito
La clase RouteControllers
procesa una colección de instancias de Controller
y mapea sus rutas y métodos a callbacks apropiados. Evalúa si una solicitud entrante coincide con una ruta definida, permitiendo un enrutamiento dinámico con soporte para:
- Paths con comodines (por ejemplo,
*
para cualquier ruta). - Parámetros dinámicos (por ejemplo,
/users/:userId
). - Métodos HTTP con comodines (por ejemplo,
'*'
para cualquier método).
Instalación
Instala el paquete s42-core
para usar RouteControllers
:
Uso
Importar y Definir Controladores
Para usar RouteControllers
, primero debes definir las rutas utilizando la clase Controller
.
Métodos Clave
constructor(controllers: Controller[])
Inicializa una instancia de RouteControllers
con un array de instancias de Controller
.
Parámetros:
controllers
: Un array de instancias deController
que definen las rutas.
getCallback(): (req: Request) => Promise<Response>
Devuelve una función callback para manejar solicitudes entrantes. Este callback determina si existe una ruta y ejecuta la cadena de middlewares correspondiente.
checkRoute(route: string): RouteCheckResult
Evalúa si una ruta dada existe en los controladores registrados. Soporta:
- Métodos con comodines (
'*'
). - Rutas con comodines (
'*'
). - Parámetros dinámicos (por ejemplo,
:userId
).
Resultado de Ejemplo:
Características
- Enrutamiento Dinámico: Maneja rutas estáticas, parámetros dinámicos y rutas con comodines sin problemas.
- Soporte para Middlewares: Integra middlewares en las instancias de
Controller
para preprocesar solicitudes. - Mapeo Eficiente: Construye una caché interna para una búsqueda rápida de rutas y callbacks.
- Manejo de Errores: Devuelve respuestas apropiadas de
404
o500
para rutas no coincidentes o errores internos. - Integración Flexible: Funciona perfectamente con la clase
Server
des42-core
.
Salida de Ejemplo
1. Rutas Definidas
-
Ruta:
GET /test
- Respuesta:
{ "message": "Hola Mundo!" }
- Respuesta:
-
Ruta:
GET /users/123
- Respuesta:
{ "userId": "123" }
- Respuesta:
-
Ruta:
POST /unknown
- Respuesta:
"Recurso no encontrado"
- Respuesta:
Ventajas
- Simplifica el Enrutamiento: Mapea automáticamente controladores a rutas.
- Soporta Comodines: Enrutamiento flexible con
'*'
para métodos y rutas. - Resiliencia ante Errores: Maneja adecuadamente rutas no coincidentes y excepciones.
- Integración con Middlewares: Permite lógica en capas para solicitudes.
Licencia
Este proyecto está licenciado bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.