Rutas en laravel

Author
Por Darío Rivera
Publicado el en Laravel

Las rutas en laravel están definidas en los archivos que puedes encontrar en la carpeta routes. De estos archivos nos vamos a centrar en dos principalmente: web.php y api.php. Estos dos archivos definen las rutas para la aplicación web y para la api (casi siempre rest). El comportamiento del router se puede decir que es el mismo cuando estamos definido cualquier tipo de ruta, dicho esto veremos algunas generalidades antes observar cómo se utiliza en un lado o en otro.

La definición de una ruta tiene muchas variaciones, veamos la que creo, es la definición más simple.

Route::get('/user', 'UserController@index');

Esta simple línea de código le dice a laravel que al realizar una petición GET sobre la ruta /user se ejecute el método index del controlador UserController. Otra variación más general a la anterior acepta un callback como segundo parámetro tal y como se puede observar en los siguientes ejemplos.

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);

Para cada verbo HTTP laravel implementa un método estático con el mismo nombre que acepta solo peticiones por el verbo definido. De esta forma, un ejemplo particular podría ser el siguiente:

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

La anterior definición viene por defecto en una instalación limpia de laravel. El callback pasado como segundo parámetro de la función get le dice a laravel que retorne o muestre la vista welcome sin necesidad de pasar por un controlador. Esta vista corresponde al archivo welcome.blade.php en la carpeta resources/view. Sin embargo, existe una maner mucho más corta si lo que se desea es simplemente retornar una vista. el siguiente ejemplo es equivalente al anterior.

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

Adicional si necesitas pasarle algún parámetro o mensaje a la vista (observa cómo en nuestro post Patrón MVC en laravel) podrías utilizar un parámetro adicional para esto:

Route::view('/welcome', 'welcome', ['message' => 'Hello world!']);

Si un método de tu controlador o un callback necesita pasar por más de un verbo HTTP no es necesario repetir la definición de la ruta, basta con utilizar la siguiente variante:

Route::match(['get', 'post'], '/', function () {
    // match get and post
});

Si la petición está abierta a cualquier verbo HTTP basta utilizar el método any.

Route::any('foo', function () {
    // match any verb
});

Para resumir recuerda que las rutas para acceder con URL en el navegador están definidas como ya se dijo en el archivo web.php. Las rutas para acceder en api están definidas en el archivo api .php. Cualquier ruta definida en este archivo tendrá por defecto el prefijo /api seguido del nombre de la ruta. Hasta pronto!.


Acerca de Darío Rivera

Author

Application Architect at Elentra Corp . Quality developer and passionate learner with 10+ years of experience in web technologies. Creator of EasyHttp , an standard way to consume HTTP Clients.

LinkedIn Twitter Instagram

Sólo aquellos que han alcanzado el éxito saben que siempre estuvo a un paso del momento en que pensaron renunciar.