S42-Core Controller Clase
- Documentación de Controller
Documentación de Controller
La clase Controller
es parte del paquete s42-core
y proporciona una manera intuitiva y flexible de definir endpoints para solicitudes HTTP. Admite enrutamiento dinámico, cadenas de middlewares y múltiples métodos HTTP para cada ruta.
Esta clase está diseñada para trabajar perfectamente con la clase RouteControllers
para gestionar rutas de aplicación de manera eficiente.
Propósito
La clase Controller
:
- Simplifica la definición de endpoints HTTP.
- Admite middlewares para procesar solicitudes.
- Maneja múltiples métodos HTTP para un solo endpoint.
- Permite rutas con parámetros dinámicos.
Instalación
Instala el paquete s42-core
:
Uso
Ejemplo Básico
Agregar Middlewares
Puedes encadenar múltiples middlewares para preprocesar la solicitud. Los middlewares se ejecutan en orden y pueden devolver opcionalmente un Response
. Si un middleware devuelve undefined
, se ejecuta el siguiente middleware en la cadena.
Manejar Múltiples Métodos
Puedes agregar múltiples métodos HTTP para un solo controlador.
Esto permite que la misma ruta /hello
maneje solicitudes GET
, POST
y DELETE
.
Parámetros Dinámicos
Define rutas dinámicas con parámetros:
El objeto req.params
contiene los parámetros dinámicos analizados desde la URL.
Métodos Clave
Constructor
method
: El método HTTP para la ruta (por ejemplo,GET
,POST
).path
: La ruta (por ejemplo,/users/:userId
).callback
: El middleware principal para manejar la solicitud.
getPath(): string
Devuelve la ruta asociada con el controlador.
getMethods(): TYPE_HTTP_METHOD[]
Devuelve un array de los métodos HTTP admitidos por el controlador.
use(callback: Middleware): this
Agrega un middleware al controlador. Los middlewares se ejecutan en el orden en que se agregan.
Métodos HTTP
Estos métodos permiten agregar métodos HTTP al controlador:
get()
: Agrega el métodoGET
.post()
: Agrega el métodoPOST
.delete()
: Agrega el métodoDELETE
.put()
: Agrega el métodoPUT
.patch()
: Agrega el métodoPATCH
.options()
: Agrega el métodoOPTIONS
.update()
: Agrega el métodoUPDATE
.
getCallback(): (req: Request, res: Res) => Promise<Response>
Devuelve una función callback que maneja la solicitud entrante. La función ejecuta la cadena de middlewares y devuelve un Response
.
Ejemplo de Integración con RouteControllers
La clase Controller
está diseñada para trabajar con RouteControllers
. Aquí tienes un ejemplo:
Características
- Enrutamiento Dinámico: Admite rutas estáticas, dinámicas y con comodines.
- Soporte para Middlewares: Permite el procesamiento en capas de las solicitudes.
- Métodos Flexibles: Maneja múltiples métodos HTTP para una sola ruta.
- Listo para Integración: Diseñado para trabajar con
RouteControllers
para un enrutamiento eficiente.
Ventajas
- Modular: Permite definir endpoints como módulos independientes.
- Encadenable: Agrega métodos y middlewares de manera fluida.
- Manejo de Errores: Incluye manejo robusto de errores en las cadenas de middlewares.
- Parámetros Dinámicos: Admite rutas parametrizadas para un enrutamiento flexible.
Licencia
Este proyecto está licenciado bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.