---
title: "Aprende Laravel: Rutas"
excerpt: "Este es el segundo artículo de seis relacionado a como usar laravel por primera vez, en este artículo vamos a conocer lo básico del sistema de rutas de Laravel"
date: "2023-05-30T22:40:37.000Z"
lastModified: "2026-03-29T00:00:00.000Z"
category: "Laravel"
author:
  name: "angel cruz"
  picture: "https://angelcruzdevcdn.nyc3.cdn.digitaloceanspaces.com/images/me/angel-cruz.png"
ogImage:
  url: "/images/open-graph/laravel-opengraph-image.png"
seo_title: "Rutas en Laravel 13: Routing, Parámetros, Grupos y Route Model Binding"
seo_description: "Aprende el sistema de routing de Laravel: rutas básicas, parámetros, nombres, grupos y route model binding. Guía paso a paso en español."
keywords:
  - laravel
  - rutas laravel
  - routing laravel
  - route parameters
  - laravel español
learning_path:
  series: "laravel-fundamentals"
  order: 2
  total: 6
  prev_slug: "aprende-laravel-instalacion-setup"
  next_slug: "aprende-laravel-vistas-layouts"
---

![Laravel Logo](https://angelcruzdevcdn.nyc3.cdn.digitaloceanspaces.com/images/laravel-banner.svg)

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`. 

![](https://media.tenor.com/DNCBqbguizsAAAAC/magic.gif)

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:

```php
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:

```php
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:

```php
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:

```php
Route::get('/{user_id}', function ($user_id) {
    return view('welcome');
});
```

También puedes usar **Route Model Binding** para cargar automáticamente models:

```php
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](/post/aprende-laravel-vistas-layouts), 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](https://www.youtube.com/watch?v=8Fv2BNGLw_8)

Playlist completa en YouTube: [Aprende Laravel @ YouTube](https://www.youtube.com/playlist?list=PLPFfjDS32gikCkR3s7pLN40MJuSlOFu6h)

---

## Sitemap

Índice completo del sitio: [/sitemap.md](https://www.angelcruz.dev/sitemap.md)

Canónico HTML: [https://www.angelcruz.dev/post/aprende-laravel-rutas](https://www.angelcruz.dev/post/aprende-laravel-rutas)
