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. Si revisas la carpeta de rutas de nuestra aplicación, verás 4 archivos de rutas. Primero, permíteme explicar esos archivos.
api.php: Aquí es donde puedes definir las rutas de la API. 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. -
console.php: Aquí es donde puedes definir tus propios comandos de Artisan. Todos los comandos definidos aquí se basan en closures.
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 el nombre de un controlador y una función como callback que se encargará de la solicitud de esta forma:
Route::get('/', 'HomeController@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 un artículo específico de Controladores
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.
Video de la lección
Ver video tutorial: Aprende Laravel - Rutas
Playlist completa en YouTube: Aprende Laravel @ YouTube
