# Guía de migración: 9.8.3 → 9.8.4

La versión **9.8.4** incluye una corrección en los estados HTTP y mejoras en el manejo de prefijos de rutas y la normalización de URL.

---

## Resumen

### Añadido

- Esta guía de migración.

### Modificado

- `getHttpStatus()` ahora reconoce el estado `401 Unauthorized`.
- `ORoute::prefix()` y `ORoute::group()` ahora permiten anidamiento.
- Las URL registradas con los métodos estáticos de `ORoute` se normalizan para eliminar barras duplicadas y finales.

### Eliminado

- No se ha eliminado nada.

---

## Impacto en proyectos existentes

- No es necesario modificar las definiciones de rutas existentes.
- Los prefijos y grupos de rutas anidados ahora generan rutas con prefijos acumulativos.
- Las URL de las rutas se normalizan de forma consistente cuando contienen barras repetidas o finales.
- No se requieren cambios de configuración, en la base de datos ni en la CLI.

Por ejemplo, con prefijos anidados:

```php
ORoute::prefix('/api', function(): void {
	ORoute::get('/health', HealthComponent::class);

	ORoute::prefix('/admin', function(): void {
		ORoute::post('/login', LoginComponent::class);
		ORoute::get('/me', MeComponent::class, [AdminAuthFilter::class]);
	});
});
```

Se registran estas rutas:

- `/api/health`
- `/api/admin/login`
- `/api/admin/me`

Las URL de las rutas también se normalizan. Por ejemplo:

```php
ORoute::prefix('/api/', function(): void {
	ORoute::prefix('//admin///', function(): void {
		ORoute::get('//users/', UsersComponent::class);
	});
});
```

La ruta se registra como:

- `/api/admin/users`

La normalización de URL se aplica en los métodos estáticos de `ORoute`: `get()`, `post()`, `put()`, `delete()`, `view()`, `group()` y `prefix()`.

## Objetivo de esta actualización

Esta versión tiene como objetivo:

- Devolver el texto de estado HTTP correcto para `401 Unauthorized` en lugar de recurrir a `200 OK`.
- Permitir prefijos y grupos de rutas anidados, y normalizar las URL de las rutas de forma consistente.

---

## Compatibilidad con versiones anteriores

Las definiciones de rutas existentes siguen siendo compatibles. Las URL con barras duplicadas o finales ahora se normalizan a una única ruta canónica. Si tu aplicación depende de que esas barras sean significativas, revisa las definiciones de rutas.

---

## Acción requerida por el desarrollador

En aplicaciones típicas no se requiere ninguna acción. Revisa las definiciones de rutas que dependan de barras duplicadas o finales.

---

## Notas

No se requiere ninguna migración de la base de datos.
