Laravel

Aprende Laravel: Rutas

Autorangel cruz
Actualizado
Publicado
Lectura5 min de lectura
Aprende Laravel: Rutas

Enrutamiento se trata de agregar rutas que permiten a las personas acceder a tu aplicación web. Sí, es tan simple como eso. Llamamos a esas rutas "routes" en inglés.

Rutas en Laravel

Laravel tiene una carpeta dedicada llamada "routes", que alberga todos los diferentes tipos de rutas que existen en Laravel. En una instalación nueva de Laravel 13 la carpeta trae dos archivos, web.php y console.php; los otros dos aparecen cuando activas la funcionalidad que los usa. Primero, permíteme explicar esos archivos.

  • api.php: Aquí es donde puedes definir las rutas de la API. No viene en una instalación nueva: lo crea php artisan install:api, que además instala Laravel Sanctum, según la documentación de rutas de Laravel. Cada ruta definida aquí se prefija automáticamente con "api/". Las rutas definidas aquí son sin estado (stateless).

Sin estado significa que no hay registro de la solicitud anterior y cada solicitud debe ser manejada únicamente en base a la información que la acompaña.

  • channels.php: Aquí es donde puedes definir canales de transmisión para diferentes eventos en nuestra aplicación. Tampoco viene por defecto: lo crea php artisan install:broadcasting.

  • console.php: Aquí es donde puedes definir tus propios comandos de Artisan basados en closures. También es el lugar donde se definen las tareas programadas del scheduler.

Básicamente, una closure en PHP es una función que se puede crear sin un nombre especificado, es decir, una función anónima.

  • web.php: Aquí es donde puedes definir las rutas que tienen estado. Las rutas definidas aquí se basan en sesiones. Nos centraremos en este archivo durante toda esta serie.

Route Facade

El facade Route es quien realiza toda la magia dentro de los archivos api.php y web.php.

Todo el código que hace que el enrutamiento funcione se encuentra en el directorio illuminate/Routing/, pero accedemos a él a través de la fachada / facade Illuminate\Support\Facades\Route.

Ejemplos de rutas

Casi todos los métodos de ruta aceptan dos parámetros: la ruta y un callback (excepto algunos de ellos).

Tenemos una ruta home dentro del archivo web.php que es parecida a esta:

Route::get('/', function () {
    return view('welcome');
});

Como pueden ver, esta ruta en particular cumple con el enunciado anterior "una ruta y un callback". Esta es la ruta predeterminada definida en el archivo web.php. Esta ruta le indica a Laravel que muestre el archivo resources/views/welcome.blade.php cuando alguien accede a nuestra URL base. El segundo parámetro es un callback, en este caso una función anónima. Esta ruta también podemos escribirla de la siguiente forma:

Route::view('/', 'welcome');

Para este ejemplo solo necesitamos dos cosas, la ruta y la vista que vamos a mostrar. También podemos pasar un controlador y el nombre de su método como callback que se encargará de la solicitud de esta forma:

use App\Http\Controllers\HomeController;
 
Route::get('/', [HomeController::class, 'index']);

En este ejemplo, la petición que se está ejecutando va a ser resuelta por el método index del controlador HomeController

Hay diferentes formas de resolver una petición desde un controlador y eso lo veremos en el artículo específico de Controllers

Los parámetros de ruta

Pasando variables a través de la URL es algo común entre los desarrolladores y la forma más fácil de hacerlo es adjuntando una cadena de consulta a la URL, como esta: http://localhost?user_id=1

En Laravel, puedes adjuntar una variable a la URL sin la cadena de consulta tradicional.

Definir una ruta con parámetros es fácil. El parámetro que forma parte de una ruta debe estar dentro de un par de llaves y debe ser pasado como parámetro a la función de esta forma:

Route::get('/{user_id}', function ($user_id) {
    return view('welcome');
});

También puedes usar Route Model Binding para cargar automáticamente models:

Route::get('/post/{post}', function (Post $post) {
    return view('post.show', compact('post'));
});

Laravel automáticamente busca el Post por ID. Si no existe, retorna 404.

Siguiente paso

En el próximo artículo aprenderemos sobre Vistas y Layouts en Laravel, donde veremos el motor de plantillas Blade.

Preguntas frecuentes

¿Qué son las rutas en Laravel?

Las rutas son URLs que permiten acceder a tu aplicación web. Actúan como un sistema de enrutamiento que conecta URLs específicas con código que genera respuestas (vistas, JSON, redirecciones, etc.). En Laravel se definen principalmente en routes/web.php.

¿Cuál es la diferencia entre web.php y api.php?

Las rutas en web.php tienen estado (basadas en sesiones) y están pensadas para aplicaciones web tradicionales. Las rutas en api.php son sin estado (stateless), se prefijan automáticamente con /api/, y están diseñadas para APIs RESTful donde cada solicitud debe manejarse únicamente con la información que la acompaña.

¿Cómo paso parámetros a una ruta?

Usa llaves en la definición de la ruta: Route::get('/{user_id}', function ($user_id) { ... }). Los parámetros entre llaves se pasan automáticamente como argumentos a la función callback.

¿Qué es Route Model Binding?

Es una característica de Laravel que carga automáticamente modelos Eloquent basándose en parámetros de ruta. Por ejemplo: Route::get('/post/{post}', function (Post $post) { ... }) busca automáticamente el Post por ID y retorna 404 si no existe.

¿Puedo usar controladores en lugar de closures?

Sí, y es la forma recomendada para aplicaciones profesionales. En lugar de Route::get('/', function() { ... }), usa Route::get('/', [HomeController::class, 'index']). Los controladores organizan mejor tu código y facilitan el testing.

Fuentes

¿Tienes un proyecto en mente?

Trabajo con Laravel, WordPress, SEO técnico y servidores MCP. El primer paso es una llamada de descubrimiento, sin costo ni compromiso, donde me cuentas qué necesitas y te digo con honestidad si puedo ayudarte.

Hablemos