Saltar al contenido

¿Cómo estructurar rutas en grandes proyectos de Laravel? – Diario Laravel

Imagina un proyecto de Laravel con más de 100 rutas, una sección separada para invitados, usuarios, administradores, etc. ¿Realmente quieres mantenerlo todo en un solo archivo? ¿Cómo puede agruparlos, agregar prefijos a las URL? Veamos qué opciones tenemos.

1. Rutas WEB y API independientes

Este es fácil, ya que Laravel se envía con esta función de forma predeterminada. Hay dos archivos:

Entonces, si su proyecto tiene páginas web visuales y API (que es cada vez más común en estos días), coloque las rutas API en ese archivo separado.

Por ejemplo, si tiene / usuarios página y luego / api / users / endpoint, separarlos en sus propios archivos ayuda a no confundirse con los mismos nombres en el mismo archivo.

Dicho esto, recientemente vi un ejemplo contrario a la intuición de oficial Proyecto Laravel. Con Laravel Horizon, Taylor ha solamente Rutas API, y no usó un archivo separado, sino que lo puso en rutas / web.php:

Otra prueba de que la estructuración en Laravel es muy personal y no existe un estándar al 100%, ni siquiera del propio Taylor.

2. Estructurar el archivo route / web.php en grupos

Eso también proviene de Laravel “básico”: agrupación de rutas. Este es un ejemplo de la documentación oficial de Laravel:

El uso más básico es ocultar diferentes grupos bajo diferentes middleware. Por ejemplo, desea que un grupo esté restringido de forma predeterminada auth middleware, otro grupo por separado administración middleware personalizado, etc.

Con eso, también puede usar el grupo de rutas nombres y prefijos. Nuevamente, algunos ejemplos de la documentación oficial:

Además, si desea agregar todo el middleware + nombre + prefijo a un grupo, es más legible colocarlos en una matriz:

Unámoslo todo en un ejemplo de la vida real y tres grupos:

Aquí hay una forma de agruparlo todo en rutas / web.php expediente:

3. Agrupar controladores con espacios de nombres

En el ejemplo anterior, no usamos Controllers, solo devolvimos texto estático como ejemplo. Agreguemos controladores, con un “giro” más: los estructuraremos en las carpetas con sus propios espacios de nombres diferentes, así:

Y luego podemos usarlos en nuestro archivo de Rutas:

Pero, ¿y si tenemos muchos controladores en ese grupo? Deberíamos seguir agregando Front SomeController ¿todo el tiempo? Por supuesto no. También puede especificar el espacio de nombres como uno de los parámetros.

4. Agrupar dentro de un grupo

La situación anterior, con tres grupos, se simplifica, los proyectos reales tienen una estructura un poco diferente – de dos grupos: frontal y auth. Y luego dentro de auth hay subgrupos: usuario y administración. Para eso, podemos crear subgrupos en rutas / web.php y asignar diferentes middlewares / prefijos, etc.

Podemos hacerlo incluso con más de dos niveles, aquí hay un ejemplo del proyecto de código abierto Akaunting:

Otro ejemplo es de otro popular Laravel CRM llamado Monica:

5. Configuración global en RouteServiceProvider

Hay un archivo que sirve para todas las configuraciones de rutas: app / Providers / RouteServiceProvider.php. Tiene metodo mapa() donde enlaza ambos archivos de rutas: web y API:

Has notado middleware, espacio de nombres y prefijo siendo mencionado en los métodos? Ahí es donde puede establecer la configuración global para todo el archivo, de modo que no tenga que repetirlos para cada grupo de rutas dentro del archivo.

Se usa principalmente para rutas API, ya que su configuración suele ser la misma, como esta:

Este método anterior agregará como prefijo a todas las URL de API api / v1 / al principio.

6. Agrupar en más archivos: ¿vale la pena?

Si tiene una gran cantidad de rutas y desea agruparlas aún más, en archivos separados, puede usar el mismo archivo mencionado en la sección anterior: app / Providers / RouteServiceProvider.php. Si miras más de cerca su mapa() métodos, verá un lugar comentado al final:

Puede interpretarlo como una especie de “invitación” para agregar más archivos, si lo desea. Entonces puedes crear otro método como mapAdminRoutes () dentro de este archivo, y luego agréguelo al mapa() método, y su archivo separado se registrará y cargará automáticamente.

Pero, personalmente, no veo muchas ventajas en este enfoque y no lo he visto hacer con mucha frecuencia. Trae un poco más de separación de rutas, pero a veces te pierdes en esos archivos y no estás seguro de dónde buscar una ruta específica.

7. Encuentra la ruta exacta con la ruta artesanal: comando de lista

Hablando de rutas más grandes y perderse allí, tenemos un comando artesanal que ayuda a localizar una ruta determinada.

Probablemente todos sepan eso ruta artesanal php: lista te dará todas las rutas del proyecto:

Pero, ¿sabía que tiene más capacidades de filtrado para encontrar exactamente lo que desea? Solo agrega -método, o -nombre, o -camino con parámetros.

Filtrar por método: OBTENER, PUBLICAR, etc.

Filtrar por nombre o parte de URL:

Eso es todo lo que pude decir sobre la agrupación de rutas en proyectos más grandes. ¿Tiene otros ejemplos? Por favor comparta los comentarios.

¿Te gustan nuestros artículos?
¡Consulta nuestros cursos en línea de Laravel!

Este contenido se publicó originalmente aquí.