En este videotutorial del Curso de Novedades de Laravel 11, aprenderás cómo configurar las rutas de tu aplicación en la nueva estructura de proyecto que incluye la versión más reciente del framework. Vamos a ver cuales son las opciones por defecto que trae Laravel 11, cómo podemos ajustarlas a los requerimientos de nuestra aplicación y cómo podemos tomar el control completo de la configuración de nuestras rutas si así lo requiere el desarrollo de nuestros proyectos.

¿Dónde está la configuración de las rutas en Laravel 11?

Podemos encontrarlas dentro del archivo app.php  del directorio bootstrap, que a su vez se encuentra dentro del directorio base de nuestra aplicación. Dentro del nuevo método withRouting:

return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        web: __DIR__.'/../routes/web.php',
        commands: __DIR__.'/../routes/console.php',
        health: '/up'
    )
    ->withMiddleware(function ($middleware) {
        //
    });

El nuevo método withRouting usa la sintaxis de argumentos con nombre, la cual explicamos a fondo en nuestra serie de Novedades de PHP 8.

Seguimos especificando las rutas para web '/../routes/web.php' y la ruta commands '/../routes/console.php' para los comandos de consola.

La ruta health: '/up' es opcional y permite verificar el estado de salud de la aplicación. Podemos eliminarla si no queremos que nuestra aplicación tenga una ruta de estado.

Agregando rutas de tipo API

Puedes hacer uso del parámetro con nombre api: __DIR__.'/../routes/api.php'

return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        web: __DIR__.'/../routes/web.php',
        commands: __DIR__.'/../routes/console.php',
        api: __DIR__.'/../routes/api.php',
        health: '/up'
    )
    ->withMiddleware(function (Middleware $middleware) {
        // 
    })
    ->withExceptions(function (Exceptions $exceptions){ 
        // 
    })->create();

Además deberás crear el archivo de api.php en el directorio routes dado que este ya no viene incluido por defecto con Laravel 11.

Route::get('/hello', function () {
      return 'Hello, World!';
  });

Si quieres cambiar el prefijo de tu API (que por defecto es api/), puedes utilizar el parámetro con nombre apiPrefix y establecer su valor en una cadena vacía o el prefijo que prefieras.

return Application::configure(basePath: dirname(__DIR__)) 
    ->withRouting( 
        web: __DIR__.'/../routes/web.php', 
        commands: __DIR__.'/../routes/console.php', 
        api: __DIR__.'/../routes/api.php', 
        apiPrefix: 'mi-api' 
    ) 
    ->withMiddleware(function (Middleware $middleware) { 
        // 
    })
    ->withExceptions(function (Exceptions $exceptions){
        //
    })->create();

Otra opción para tener rutas de tipo API con Laravel Sanctum, es ejecutando el comando php artisan install:api como veremos un poco más adelante.

Personalizando por completo la configuración de rutas en Laravel 11

Una opción importante del método withRouting es el parámetro using, el cual acepta una función callback y nos permite personalizar el Router libremente tal como lo lográbamos dentro de RouteServiceProvider en Laravel 10 o inferior:

return Application::configure(basePath: dirname(__DIR__))
  ->withRouting(
    using: function (Illuminate\Routing\Router $router) {
      $router->middleware("api')
        ->prefix("api')
        ->group (base_path("routes/api.php'));

      $router->middleware("web")
        ->group (base_path('routes/web.php"));
    }
  )

Ejecutamos la función withRouting declarando nuestras rutas o podemos también hacer referencia a archivos de rutas cómo lo hacíamos dentro de Laravel 10. Logrando de está forma configurar tantos archivos de rutas como queramos.

Material relacionado

 

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.

Lección anterior Cambios a los Service Providers en Laravel 11 Lección siguiente Middleware en Laravel 11