Rutas en Laravel
Las rutas de la aplicación se definen en los siguientes ficheros:
Directorio routes/:
- api.php → Rutas para API
- channels.php → Suscripciones a eventos
- console.php → Rutas para consola
- web.php → Rutas para acceso Web
Nota: Cualquier ruta no definida retornará un error 404.
Definición de rutas
Para cada ruta se define:
- Método HTTP de la petición: GET, POST, PUT, DELETE
- Ruta URL (sin el dominio, que está definido en config/app.php)
- Respuesta a la petición a esa ruta
Podemos devolver tres tipos de respuestas: - Un valor (como una cadena) - Una vista - Enlazar con un método de un controlador
Ejemplos básicos
Ejemplo de ruta para peticiones tipo GET a la URL raíz:
Route::get('/', function() {
return '¡Hola mundo!';
});
Ejemplo de respuesta a peticiones tipo POST:
Route::post('foo/bar', function() {
return '¡Hola mundo!';
});
Múltiples métodos HTTP
Definir una ruta que responda a varios tipos de peticiones:
Route::match(['GET', 'POST'], '/', function() {
return '¡Hola mundo!';
});
O que responda a todos los métodos HTTP:
Route::any('foo', function() {
return '¡Hola mundo!';
});
Parámetros en rutas
Para añadir parámetros a las rutas, se indican entre llaves {}:
Route::get('user/{id}', function($id) {
return 'User ' . $id;
});
Si queremos parámetros opcionales, añadimos el símbolo ?:
Route::get('user/{name?}', function($name = null) {
return $name;
});
Para generar un enlace a una ruta:
$url = url('foo');
Rutas con nombre
Podemos asignar nombre a las rutas:
Route::get('user/{id}', function($id) {
// Lógica
})->name('user.show');
Se puede generar un enlace a una ruta usando su nombre:
$url = route('user.show', ['id' => 1]);