jerkjs 2.5.6 → 2.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +167 -79
- package/README.md +134 -146
- package/RESULTADOS_WAF.md +63 -0
- package/doc-2.5/ADMIN_EXTENSION_COMMANDS_MANUAL.md +261 -0
- package/doc-2.5/ADMIN_EXTENSION_HOOK_EXAMPLE.md +28 -0
- package/doc-2.5/ADMIN_EXTENSION_INTEGRATION_MANUAL.md +232 -0
- package/doc-2.5/CACHE_SYSTEM_MAP.md +206 -0
- package/doc-2.5/MANUAL_MODULOS_ADMIN.md +287 -0
- package/doc-2.5/QUEUE_CLI_MODULE_MANUAL.md +289 -0
- package/doc-2.5/QUEUE_SYSTEM_MANUAL.md +320 -0
- package/doc-2.5/ROUTE_CACHE_MODULE_MANUAL.md +205 -0
- package/doc-2.5/WAF_MODULE_MANUAL.md +229 -0
- package/index.js +19 -4
- package/jerk-admin-client/README.md +69 -0
- package/jerk-admin-client/package.json +23 -0
- package/jerk-admin-client.js +257 -0
- package/lib/admin/AdminExtension.js +491 -0
- package/lib/admin/ModuleLoader.js +77 -0
- package/lib/admin/config.js +21 -0
- package/lib/admin/modules/CacheModule.js +145 -0
- package/lib/admin/modules/ControllerGeneratorModule.js +414 -0
- package/lib/admin/modules/QueueManagementModule.js +265 -0
- package/lib/admin/modules/RouteCacheModule.js +227 -0
- package/lib/admin/modules/RouteManagerModule.js +468 -0
- package/lib/admin/modules/STATS_MODULE_README.md +113 -0
- package/lib/admin/modules/StatsModule.js +140 -0
- package/lib/admin/modules/SystemModule.js +140 -0
- package/lib/admin/modules/TimeModule.js +95 -0
- package/lib/admin/modules/ViewCacheStatsModule.js +92 -0
- package/lib/admin/modules/WAFModule.js +737 -0
- package/lib/cache/CacheHooks.js +141 -0
- package/lib/core/server.js +223 -77
- package/lib/middleware/firewall.js +112 -17
- package/lib/mvc/viewEngine.js +89 -5
- package/lib/queue/GlobalQueueStorage.js +38 -0
- package/lib/queue/QueueSystem.js +451 -0
- package/lib/queue/admin_example.js +114 -0
- package/lib/queue/example.js +268 -0
- package/lib/queue/integration.js +109 -0
- package/lib/router/RouteMatcher.js +242 -54
- package/lib/utils/globalStats.js +16 -0
- package/lib/utils/globalViewCacheInfo.js +16 -0
- package/lib/utils/globalWAFStats.js +54 -0
- package/package.json +2 -2
- package/test-colors.js +46 -0
- package/test-help-alias.js +31 -0
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
# Mapa de Procesos de Caché del Framework JERK
|
|
2
|
+
|
|
3
|
+
## Introducción
|
|
4
|
+
|
|
5
|
+
Este documento describe los diferentes sistemas de caché implementados en el framework JERK y cómo se integran en los flujos del sistema.
|
|
6
|
+
|
|
7
|
+
## Sistemas de Caché
|
|
8
|
+
|
|
9
|
+
### 1. Caché de Expresiones Regulares para Rutas (RouteMatcher)
|
|
10
|
+
|
|
11
|
+
**Ubicación**: `lib/router/RouteMatcher.js`
|
|
12
|
+
**Tipo**: Mapa de caché (Map)
|
|
13
|
+
**Propósito**: Almacenar expresiones regulares compiladas para rutas parametrizadas
|
|
14
|
+
**Clave**: Ruta con parámetros (ej. `/users/:id`)
|
|
15
|
+
**Valor**: Expresión regular compilada
|
|
16
|
+
**Flujo de proceso**:
|
|
17
|
+
1. Al procesar una ruta parametrizada, se convierte a expresión regular
|
|
18
|
+
2. Antes de compilar, se verifica si ya existe en el cache
|
|
19
|
+
3. Si existe, se devuelve la expresión regular cacheada
|
|
20
|
+
4. Si no existe, se compila, se almacena en cache y se devuelve
|
|
21
|
+
|
|
22
|
+
**Beneficios**:
|
|
23
|
+
- Evita compilación repetida de expresiones regulares
|
|
24
|
+
- Mejora el rendimiento de coincidencia de rutas parametrizadas
|
|
25
|
+
- Reduce el uso de CPU en operaciones repetidas
|
|
26
|
+
|
|
27
|
+
### 2. Caché de Vistas (ViewEngine)
|
|
28
|
+
|
|
29
|
+
**Ubicación**: `lib/mvc/viewEngine.js`
|
|
30
|
+
**Tipo**: Mapa de caché (Map)
|
|
31
|
+
**Propósito**: Almacenar contenido de vistas ya procesadas (sin variables)
|
|
32
|
+
**Clave**: Ruta completa del archivo de vista
|
|
33
|
+
**Valor**: Contenido de la vista procesado (condiciones, bucles, etc. resueltos)
|
|
34
|
+
**Flujo de proceso**:
|
|
35
|
+
1. Al solicitar una vista, se verifica si está en cache
|
|
36
|
+
2. Si está en cache, se procesa con las variables y se devuelve
|
|
37
|
+
3. Si no está en cache, se lee el archivo, se procesa (condiciones, bucles, etc.)
|
|
38
|
+
4. Si el cache está habilitado, se almacena la vista procesada (sin variables)
|
|
39
|
+
5. Se procesan las variables y se devuelve el resultado
|
|
40
|
+
|
|
41
|
+
**Beneficios**:
|
|
42
|
+
- Evita lectura repetida de archivos de vistas
|
|
43
|
+
- Evita procesamiento repetido de condiciones y bucles
|
|
44
|
+
- Mejora el rendimiento de renderizado de vistas
|
|
45
|
+
|
|
46
|
+
### 3. Caché de Controladores (ControllerLoader)
|
|
47
|
+
|
|
48
|
+
**Ubicación**: `lib/loader/controllerLoader.js`
|
|
49
|
+
**Tipo**: Sistema de caché de módulos de Node.js
|
|
50
|
+
**Propósito**: Evitar recarga repetida de módulos de controladores
|
|
51
|
+
**Clave**: Ruta del archivo del controlador
|
|
52
|
+
**Valor**: Instancia del módulo del controlador
|
|
53
|
+
**Flujo de proceso**:
|
|
54
|
+
1. Al cargar un controlador, se verifica si ya está en el cache de require
|
|
55
|
+
2. Si no está en cache, se carga y se mantiene en require.cache
|
|
56
|
+
3. En subsiguientes solicitudes, se devuelve la instancia cacheada
|
|
57
|
+
|
|
58
|
+
**Beneficios**:
|
|
59
|
+
- Evita recarga repetida de módulos
|
|
60
|
+
- Mejora el rendimiento de carga de controladores
|
|
61
|
+
- Reduce el uso de memoria
|
|
62
|
+
|
|
63
|
+
### 4. Índices de Rutas (RouteMatcher)
|
|
64
|
+
|
|
65
|
+
**Ubicación**: `lib/router/RouteMatcher.js`
|
|
66
|
+
**Tipo**: Mapas de índices y estructuras de datos
|
|
67
|
+
**Propósito**: Optimizar la búsqueda de rutas mediante pre-filtrado
|
|
68
|
+
**Componentes**:
|
|
69
|
+
- `exactRoutes`: Mapa de rutas exactas por método y path
|
|
70
|
+
- `routeBuckets`: Estructura jerárquica por método, número de segmentos y primer segmento
|
|
71
|
+
- `indexesValid`: Bandera para validar si los índices están actualizados
|
|
72
|
+
|
|
73
|
+
**Flujo de proceso**:
|
|
74
|
+
1. Al registrar rutas, se actualizan los índices
|
|
75
|
+
2. Al buscar una ruta, se usan los índices para pre-filtrar candidatos
|
|
76
|
+
3. Se buscan coincidencias exactas primero (más rápido)
|
|
77
|
+
4. Se buscan rutas parametrizadas solo entre candidatos filtrados
|
|
78
|
+
5. Se buscan rutas estáticas por prefijo entre candidatos filtrados
|
|
79
|
+
|
|
80
|
+
**Beneficios**:
|
|
81
|
+
- Reduce drásticamente el número de rutas a evaluar
|
|
82
|
+
- Mejora el rendimiento de coincidencia de rutas
|
|
83
|
+
- Escala mejor con un gran número de rutas
|
|
84
|
+
|
|
85
|
+
## Flujos de Integración de Caché
|
|
86
|
+
|
|
87
|
+
### Flujo de Procesamiento de Solicitudes
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
Solicitud HTTP
|
|
91
|
+
↓
|
|
92
|
+
Middleware de seguridad
|
|
93
|
+
↓
|
|
94
|
+
Verificación de índices de rutas (RouteMatcher)
|
|
95
|
+
↓
|
|
96
|
+
→ Búsqueda por ruta exacta (más rápida)
|
|
97
|
+
↓
|
|
98
|
+
→ Pre-filtrado por número de segmentos y primer segmento
|
|
99
|
+
↓
|
|
100
|
+
→ Búsqueda en rutas candidatas
|
|
101
|
+
↓
|
|
102
|
+
→ Coincidencia con expresiones regulares (usando cache)
|
|
103
|
+
↓
|
|
104
|
+
Ejecución del handler de la ruta
|
|
105
|
+
↓
|
|
106
|
+
Renderizado de vista (usando cache de vistas)
|
|
107
|
+
↓
|
|
108
|
+
Respuesta HTTP
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Flujo de Caché de Expresiones Regulares
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
Solicitud de coincidencia de ruta parametrizada
|
|
115
|
+
↓
|
|
116
|
+
→ ¿Está la expresión regular en cache?
|
|
117
|
+
↓
|
|
118
|
+
┌─────────────┬─────────────┐
|
|
119
|
+
│ SÍ │ NO │
|
|
120
|
+
│ │ │
|
|
121
|
+
│ Devolver │ Compilar │
|
|
122
|
+
│ regex │ expresión │
|
|
123
|
+
│ cacheada │ regular │
|
|
124
|
+
│ │ │
|
|
125
|
+
└─────────────┴─────────────┘
|
|
126
|
+
↓
|
|
127
|
+
Almacenar en cache
|
|
128
|
+
↓
|
|
129
|
+
Usar para coincidencia
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Flujo de Caché de Vistas
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
Solicitud de renderizado de vista
|
|
136
|
+
↓
|
|
137
|
+
→ ¿Está la vista en cache?
|
|
138
|
+
↓
|
|
139
|
+
┌─────────────┬─────────────┐
|
|
140
|
+
│ SÍ │ NO │
|
|
141
|
+
│ │ │
|
|
142
|
+
│ Procesar │ Leer archivo│
|
|
143
|
+
│ con vars │ de vista │
|
|
144
|
+
│ │ │
|
|
145
|
+
│ Devolver │ Procesar │
|
|
146
|
+
│ resultado │ condiciónes,│
|
|
147
|
+
│ │ bucles, etc.│
|
|
148
|
+
│ │ │
|
|
149
|
+
│ │ → ¿Cache │
|
|
150
|
+
│ │ habilitado?│
|
|
151
|
+
│ │ ↓ │
|
|
152
|
+
│ │ ┌─────────┼─┐
|
|
153
|
+
│ │ │ SÍ │ │
|
|
154
|
+
│ │ │ │ │
|
|
155
|
+
│ │ │ Almacenar││
|
|
156
|
+
│ │ │ vista en ││
|
|
157
|
+
│ │ │ cache ││
|
|
158
|
+
│ │ └─────────┼─┘
|
|
159
|
+
│ │ │
|
|
160
|
+
└─────────────┴─────────────┘
|
|
161
|
+
↓
|
|
162
|
+
Devolver HTML renderizado
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## Estrategias de Invalidación de Caché
|
|
166
|
+
|
|
167
|
+
### Caché de Expresiones Regulares
|
|
168
|
+
- No requiere invalidación frecuente
|
|
169
|
+
- Se actualiza automáticamente al cambiar las rutas
|
|
170
|
+
|
|
171
|
+
### Caché de Vistas
|
|
172
|
+
- Se puede limpiar manualmente con `viewEngine.clearCache()`
|
|
173
|
+
- No se invalida automáticamente (diseñado para vistas estáticas)
|
|
174
|
+
|
|
175
|
+
### Caché de Controladores
|
|
176
|
+
- Se mantiene durante todo el ciclo de vida del proceso
|
|
177
|
+
- Se puede limpiar manualmente eliminando del `require.cache`
|
|
178
|
+
|
|
179
|
+
### Índices de Rutas
|
|
180
|
+
- Se actualizan automáticamente al registrar nuevas rutas
|
|
181
|
+
- Se invalidan si cambia el número total de rutas
|
|
182
|
+
|
|
183
|
+
## Beneficios del Sistema de Caché
|
|
184
|
+
|
|
185
|
+
1. **Mejora de Rendimiento**: Reducción significativa de operaciones repetidas
|
|
186
|
+
2. **Eficiencia de CPU**: Menos compilación de expresiones regulares y procesamiento de vistas
|
|
187
|
+
3. **Eficiencia de I/O**: Menos lecturas de disco para archivos de vistas
|
|
188
|
+
4. **Escalabilidad**: Mejor manejo de alto volumen de solicitudes
|
|
189
|
+
5. **Optimización de Memoria**: Reutilización de estructuras de datos ya procesadas
|
|
190
|
+
|
|
191
|
+
## Consideraciones de Seguridad
|
|
192
|
+
|
|
193
|
+
- Las cachés no almacenan datos sensibles de usuarios
|
|
194
|
+
- Las expresiones regulares cacheadas no contienen información de entrada del usuario
|
|
195
|
+
- Las vistas cacheadas no contienen datos de sesión o variables de usuario
|
|
196
|
+
- El sistema de caché no expone información interna del sistema
|
|
197
|
+
|
|
198
|
+
## Conclusión
|
|
199
|
+
|
|
200
|
+
El framework JERK implementa múltiples niveles de caché para optimizar el rendimiento:
|
|
201
|
+
- Caché de expresiones regulares para rutas parametrizadas
|
|
202
|
+
- Caché de vistas procesadas
|
|
203
|
+
- Índices optimizados para búsqueda de rutas
|
|
204
|
+
- Caché de módulos de controladores
|
|
205
|
+
|
|
206
|
+
Estos sistemas de caché trabajan juntos para proporcionar un rendimiento óptimo al minimizar operaciones repetidas y maximizar la eficiencia del procesamiento de solicitudes.
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
# Manual de Uso: Módulos de Administración de JERK Framework
|
|
2
|
+
|
|
3
|
+
## Descripción General
|
|
4
|
+
|
|
5
|
+
Este manual describe el uso de los módulos de administración interactivos para crear controladores y gestionar rutas en JERK Framework.
|
|
6
|
+
|
|
7
|
+
## Módulo de Generación de Controladores
|
|
8
|
+
|
|
9
|
+
### Descripción
|
|
10
|
+
El módulo de generación de controladores permite crear nuevos controladores de manera interactiva con una interfaz paso a paso.
|
|
11
|
+
|
|
12
|
+
### Comandos Disponibles
|
|
13
|
+
- `generate-controller`
|
|
14
|
+
- `gen-ctrl`
|
|
15
|
+
- `new-ctrl`
|
|
16
|
+
|
|
17
|
+
### Cómo Usar el Módulo
|
|
18
|
+
|
|
19
|
+
1. **Iniciar el proceso**
|
|
20
|
+
```
|
|
21
|
+
> generate-controller
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
2. **Nombre del controlador**
|
|
25
|
+
- Ingresa el nombre base del controlador (sin la palabra "Controller")
|
|
26
|
+
- Ejemplo: "User", "Product", "Home"
|
|
27
|
+
|
|
28
|
+
3. **Selección de métodos**
|
|
29
|
+
- Selecciona los métodos que deseas incluir:
|
|
30
|
+
- 1. index - Método para mostrar lista de elementos
|
|
31
|
+
- 2. show - Método para mostrar un elemento específico
|
|
32
|
+
- 3. create - Método para crear un nuevo elemento
|
|
33
|
+
- 4. update - Método para actualizar un elemento
|
|
34
|
+
- 5. delete - Método para eliminar un elemento
|
|
35
|
+
- 6. All - Todos los métodos anteriores
|
|
36
|
+
- Opciones de entrada:
|
|
37
|
+
- Números separados por comas: "1,2,3"
|
|
38
|
+
- Nombres de métodos: "index,show,create"
|
|
39
|
+
- "All" para todos los métodos
|
|
40
|
+
|
|
41
|
+
4. **Ruta del archivo**
|
|
42
|
+
- Indica la ruta donde crear el archivo del controlador
|
|
43
|
+
- Deja vacío para usar "./controllers/" por defecto
|
|
44
|
+
- Ejemplo: "./controllers/", "./src/controllers/"
|
|
45
|
+
|
|
46
|
+
5. **Confirmación**
|
|
47
|
+
- Se mostrará una vista previa del código generado
|
|
48
|
+
- Confirma con "sí" para crear el archivo o "no" para cancelar
|
|
49
|
+
|
|
50
|
+
### Ejemplo Completo
|
|
51
|
+
```
|
|
52
|
+
> generate-controller
|
|
53
|
+
=== Generador de Controladores ===
|
|
54
|
+
Por favor, introduce el nombre del controlador (sin la palabra "Controller"):
|
|
55
|
+
> User
|
|
56
|
+
|
|
57
|
+
Selecciona los métodos que deseas incluir (separados por comas):
|
|
58
|
+
> 1,2,3
|
|
59
|
+
|
|
60
|
+
Indica la ruta donde deseas crear el archivo del controlador:
|
|
61
|
+
>
|
|
62
|
+
|
|
63
|
+
=== Vista Previa del Controlador ===
|
|
64
|
+
[... código del controlador ...]
|
|
65
|
+
¿Deseas crear este controlador? (sí/no):
|
|
66
|
+
> sí
|
|
67
|
+
|
|
68
|
+
✅ Controlador "UserController" creado exitosamente en: ./controllers/UserController.js
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Módulo de Gestión de Rutas
|
|
72
|
+
|
|
73
|
+
### Descripción
|
|
74
|
+
El módulo de gestión de rutas permite crear nuevas rutas, deshabilitar rutas existentes y ver rutas registradas o activas.
|
|
75
|
+
|
|
76
|
+
### Comandos Disponibles
|
|
77
|
+
- `manage-routes`
|
|
78
|
+
- `route-manager`
|
|
79
|
+
- `route-mgmt`
|
|
80
|
+
|
|
81
|
+
## Módulo de Cache de Rutas
|
|
82
|
+
|
|
83
|
+
### Descripción
|
|
84
|
+
El módulo de cache de rutas permite monitorear y gestionar el cache de rutas del sistema, incluyendo visualización de estadísticas, contenido del cache, y limpieza del cache.
|
|
85
|
+
|
|
86
|
+
### Comandos Disponibles
|
|
87
|
+
- `route-cache`
|
|
88
|
+
- `cache-stats`
|
|
89
|
+
- `cache-view`
|
|
90
|
+
- `cache-dynamic`
|
|
91
|
+
- `cache-static`
|
|
92
|
+
- `cache-clear`
|
|
93
|
+
|
|
94
|
+
### Cómo Usar el Módulo
|
|
95
|
+
|
|
96
|
+
1. **Ver estadísticas del cache**
|
|
97
|
+
```
|
|
98
|
+
> route-cache
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
2. **Ver contenido completo del cache**
|
|
102
|
+
```
|
|
103
|
+
> cache-view
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
3. **Ver solo rutas dinámicas (parametrizadas)**
|
|
107
|
+
```
|
|
108
|
+
> cache-dynamic
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
4. **Ver solo rutas estáticas (exactas)**
|
|
112
|
+
```
|
|
113
|
+
> cache-static
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
5. **Limpiar el cache de rutas**
|
|
117
|
+
```
|
|
118
|
+
> cache-clear
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Ejemplo de Uso
|
|
122
|
+
```
|
|
123
|
+
> route-cache
|
|
124
|
+
=== Estadísticas del Cache de Rutas ===
|
|
125
|
+
Rutas dinámicas (parametrizadas) en cache: 5
|
|
126
|
+
Rutas estáticas exactas en cache: 10
|
|
127
|
+
Tamaño total de índices: 15
|
|
128
|
+
Índices válidos: Sí
|
|
129
|
+
|
|
130
|
+
> cache-dynamic
|
|
131
|
+
=== Cache de Rutas Dinámicas (Parametrizadas) ===
|
|
132
|
+
1. Ruta: /users/:id
|
|
133
|
+
Regex: /^\/users\/([^\/]+?)$/
|
|
134
|
+
|
|
135
|
+
Total: 1 rutas dinámicas en cache.
|
|
136
|
+
|
|
137
|
+
> cache-clear
|
|
138
|
+
=== Limpieza del Cache de Rutas ===
|
|
139
|
+
Rutas dinámicas eliminadas: 5
|
|
140
|
+
Rutas estáticas eliminadas: 10
|
|
141
|
+
Cache de rutas limpiado exitosamente.
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### Cómo Usar el Módulo
|
|
145
|
+
|
|
146
|
+
1. **Iniciar el proceso**
|
|
147
|
+
```
|
|
148
|
+
> route-mgmt
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
2. **Menú Principal**
|
|
152
|
+
El sistema mostrará las opciones disponibles:
|
|
153
|
+
- 1. Crear nueva ruta
|
|
154
|
+
- 2. Deshabilitar ruta existente
|
|
155
|
+
- 3. Ver rutas registradas
|
|
156
|
+
- 4. Ver rutas activas
|
|
157
|
+
|
|
158
|
+
### Opción 1: Crear Nueva Ruta
|
|
159
|
+
|
|
160
|
+
1. **Selecciona el método HTTP**
|
|
161
|
+
- 1. GET
|
|
162
|
+
- 2. POST
|
|
163
|
+
- 3. PUT
|
|
164
|
+
- 4. DELETE
|
|
165
|
+
- 5. PATCH
|
|
166
|
+
- 6. Otro
|
|
167
|
+
- O ingresa el método directamente (GET, POST, etc.)
|
|
168
|
+
|
|
169
|
+
2. **Introduce la ruta**
|
|
170
|
+
- Ejemplo: "/api/users", "/users/:id"
|
|
171
|
+
|
|
172
|
+
3. **Ruta al archivo del controlador**
|
|
173
|
+
- Ejemplo: "./controllers/UserController.js"
|
|
174
|
+
|
|
175
|
+
4. **Nombre del handler**
|
|
176
|
+
- Nombre del método en el controlador
|
|
177
|
+
- Ejemplo: "index", "show", "create"
|
|
178
|
+
|
|
179
|
+
5. **Confirmación**
|
|
180
|
+
- Se mostrará una vista previa de la entrada para routes.json
|
|
181
|
+
- Confirma con "sí" para crear la ruta o "no" para cancelar
|
|
182
|
+
|
|
183
|
+
### Opción 2: Deshabilitar Ruta Existente
|
|
184
|
+
|
|
185
|
+
1. **Selecciona la ruta**
|
|
186
|
+
- El sistema mostrará una lista numerada de rutas registradas
|
|
187
|
+
- Ingresa el número de la ruta que deseas deshabilitar
|
|
188
|
+
|
|
189
|
+
2. **Confirmación**
|
|
190
|
+
- Se mostrará la ruta seleccionada
|
|
191
|
+
- Confirma con "sí" para deshabilitar la ruta o "no" para cancelar
|
|
192
|
+
|
|
193
|
+
### Opción 3: Ver Rutas Registradas
|
|
194
|
+
|
|
195
|
+
- Muestra todas las rutas registradas en el sistema
|
|
196
|
+
- Formato: Número. Método HTTP Ruta
|
|
197
|
+
|
|
198
|
+
### Opción 4: Ver Rutas Activas
|
|
199
|
+
|
|
200
|
+
- Muestra las rutas que han recibido solicitudes recientemente
|
|
201
|
+
- Formato: Método HTTP Ruta - Fecha y hora de la última solicitud
|
|
202
|
+
|
|
203
|
+
### Ejemplo de Creación de Ruta
|
|
204
|
+
```
|
|
205
|
+
> route-mgmt
|
|
206
|
+
=== Gestión de Rutas ===
|
|
207
|
+
¿Qué deseas hacer?
|
|
208
|
+
1. Crear nueva ruta
|
|
209
|
+
2. Deshabilitar ruta existente
|
|
210
|
+
3. Ver rutas registradas
|
|
211
|
+
4. Ver rutas activas
|
|
212
|
+
> 1
|
|
213
|
+
|
|
214
|
+
=== Crear Nueva Ruta ===
|
|
215
|
+
Selecciona el método HTTP:
|
|
216
|
+
1. GET
|
|
217
|
+
2. POST
|
|
218
|
+
3. PUT
|
|
219
|
+
4. DELETE
|
|
220
|
+
5. PATCH
|
|
221
|
+
6. Otro
|
|
222
|
+
> GET
|
|
223
|
+
|
|
224
|
+
Método seleccionado: GET
|
|
225
|
+
Introduce la ruta (ej: /api/users, /users/:id):
|
|
226
|
+
> /api/demo
|
|
227
|
+
|
|
228
|
+
Ruta: /api/demo
|
|
229
|
+
Introduce la ruta al archivo del controlador (ej: ./controllers/UserController.js):
|
|
230
|
+
> ./controllers/DemoController.js
|
|
231
|
+
|
|
232
|
+
Introduce el nombre del handler (método del controlador):
|
|
233
|
+
> index
|
|
234
|
+
|
|
235
|
+
=== Vista Previa de la Ruta ===
|
|
236
|
+
Método: GET
|
|
237
|
+
Ruta: /api/demo
|
|
238
|
+
Controlador: ./controllers/DemoController.js
|
|
239
|
+
Handler: index
|
|
240
|
+
|
|
241
|
+
Entrada para routes.json:
|
|
242
|
+
{
|
|
243
|
+
"path": "/api/demo",
|
|
244
|
+
"method": "GET",
|
|
245
|
+
"controller": "./controllers/DemoController.js",
|
|
246
|
+
"handler": "index",
|
|
247
|
+
"contentType": "application/json"
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
¿Deseas crear esta ruta? (sí/no):
|
|
251
|
+
> sí
|
|
252
|
+
|
|
253
|
+
✅ Ruta "GET /api/demo" creada exitosamente.
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
## Consejos de Uso
|
|
257
|
+
|
|
258
|
+
### Para Controladores
|
|
259
|
+
- Usa nombres descriptivos para tus controladores
|
|
260
|
+
- Considera qué métodos necesitas antes de crear el controlador
|
|
261
|
+
- Elige rutas de archivo que sigan la estructura de tu proyecto
|
|
262
|
+
|
|
263
|
+
### Para Rutas
|
|
264
|
+
- Asegúrate de que el controlador y el handler existan antes de crear la ruta
|
|
265
|
+
- Usa rutas RESTful cuando sea posible
|
|
266
|
+
- Considera el método HTTP adecuado para cada operación
|
|
267
|
+
|
|
268
|
+
## Errores Comunes y Soluciones
|
|
269
|
+
|
|
270
|
+
### Controlador
|
|
271
|
+
- **Nombre inválido**: Asegúrate de usar solo letras, números y guiones bajos
|
|
272
|
+
- **Ruta de archivo no encontrada**: Verifica que la ruta sea correcta
|
|
273
|
+
|
|
274
|
+
### Rutas
|
|
275
|
+
- **Ruta duplicada**: El sistema no impide rutas duplicadas
|
|
276
|
+
- **Controlador o handler no encontrado**: Verifica que existan antes de crear la ruta
|
|
277
|
+
- **Método HTTP inválido**: Usa métodos estándar (GET, POST, PUT, DELETE, PATCH)
|
|
278
|
+
|
|
279
|
+
## Comandos Generales
|
|
280
|
+
|
|
281
|
+
- `help`: Muestra la ayuda general
|
|
282
|
+
- `quit` o `exit`: Cierra la conexión
|
|
283
|
+
- `cancel`: Cancela el proceso interactivo actual
|
|
284
|
+
|
|
285
|
+
## Soporte
|
|
286
|
+
|
|
287
|
+
Para soporte adicional, consulta la documentación del framework o contacta al equipo de desarrollo.
|