Enrutamiento
El enrutamiento es la base de un proyecto en laravel ya que crea la conexión entre lo que el usuario está intentando acceder por medio de rutas y la acción correspondiente para dicha solicitud del usuario. En este apartado solamente se describirán aspectos básicos del enrutamiento que se puede realizar en laravel. Tomando en cuenta que ya se explico anteriormente el flujo que sucede al ingresar una petición al servidor, dejaremos solo la imagen que describe el proceso, también lo puedes volver a revisar acá.
Ruta
Una ruta es una referencia definida a una cierta función, esta puede estar o no dentro de un controlador, aunque lo recomendable para una buena modularización del sistema es que se encuentre la logica que se encargará del manejo de los datos se encuentre en un controlador definido y que la ruta realice la referencia a dicha función.
Las rutas poseen ciertas características que nos describen su método de ingreso, ruta de acceso, función o acción y de forma opcional su nombre identificador. Analicemos la siguiente ruta.
Route::get('/', 'FrontController@index')->name('front.active');
Las rutas se encuentran definidas primeramente la clase Route luego la referencia a la función get que seria la cabecera de la consulta HTTP entrante, esta función recibe dos parámetros, el primer string hace referencia a ruta que otorgará el acceso a la función de referencia expresado en el segundo parámetro y finalmente en nombre de dicha ruta el nombre es usado para tener una referencia mas corta que la ruta de acceso(El nombre de la ruta es opcional).
Ruta con Función
Route::get('/', function () {
return view('welcome');
});
Esta ruta es un tanto distinta debido a que realiza la función ella misma, en la cual esta retornando una vista llamada welcome, como expresamos seria una mala practica dar mal uso a esta posibilidad de definir funciones dentro de este archivo, lo cual no es recomendable para tener una limpieza en el código en el cual se esta trabajando.
Tipos de Rutas
Asi como existe el método de solicitud por GET, existen también otros especificos para cada función que se puede realizar sobre un modelo.
Método GET
Función: obtener la lista de recursos de un modelo
Route::get('/generos', 'GeneroController@index');
Método POST
Función: envío de datos al servidor de forma oculta, utilizado para la creación de un nuevo recurso del modelo
Route::post('/generos', 'GeneroController@store');
Método PUT/PATCH
Función: envío de datos al servidor de forma oculta, utilizado para la actualización de un recurso del modelo
Route::put('/generos/{genero}', 'GeneroController@update');
Método DELETE
Función: envio de datos al servidor de forma oculta, utilizado para eliminar un recurso especifico del modelo
Route::delete('/generos/{genero}', 'GeneroController@destroy');
Ruta tipo Resource
Las rutas en si son simples y cortas pero a pesar de ello manejar múltiples rutas por cada controlador solo pensando en la creación de su respectivo CRUD se convierte en algo tedioso o muy extenso. Es aquí donde las rutas de tipo resource se convierte tan importante debido a que nos ayudará a comprimir estas rutas en solo una, mejorando así significativamente la legibilidad de nuestro código.
Ruta de tipo resource
Route::resource('/generos', 'GeneroController');
A continuación se presenta una tabla definiendo las rutas contenidas en una de tipo resource
Método | Ruta | Acción | Nombre de Ruta |
---|---|---|---|
GET | /generos | index | generos.index |
GET | /generos/create | create | generos.create |
POST | /generos | store | generos.store |
GET | /generos/{generos} | show | generos.show |
GET | /generos/{generos}/edit | edit | generos.edit |
PUT/PATCH | /generos/{generos} | update | generos.update |
DELETE | /generos/{generos} | destroy | generos.destroy |
Cabe destacar que para que estas rutas sean validas, el controlador al cual hace referencia debió ser generado con la implementación de estas funciones, por ahora solo se aplica para entender el consepto, en el apartado de controladores se profundizará en este tema.