Verbos en las rutas de Laravel
Peticiones HTTP
El Protocolo de transferencia de hipertexto (HTTP) es un protocolo de comunicación entre un cliente y un servidor. El cliente solicita un recurso del servidor enviando una solicitud y el servidor responde enviando una respuesta, generalmente una página HTML.
Cuando navegamos por Internet, cada uno de nuestros clics suele provocar este intercambio y, en general, una explosión de intercambios.
La solicitud del cliente contiene una cierta cantidad de información (encabezados, código de estado, cuerpo...).
Tomemos un ejemplo con el sitio de . Cuando hago clic en el enlace aquí están las solicitudes HTTP que ocurren:
En las 10 solicitudes. Echemos un vistazo más de cerca al primero:
el código: 200 (así que todo salió bien) Por supuesto, hay muchas otras cosas en los encabezados (tipo de contenido, cookies, codificación...) pero por el momento estaremos contentos con esta información. Nuestro navegador digiere todo esto de manera transparente, ¡afortunadamente para nosotros!
Nuestra aplicación Laravel debe saber interpretar la información que llega y utilizarla de manera relevante para devolver lo que el cliente solicita. Veremos cómo se logra esto.
Los métodos
Nuestra aplicación Laravel debe saber interpretar la información entrante y utilizarla de forma relevante para devolver lo que el cliente solicita.
Es fundamental conocer los principales métodos de HTTP :
Get: recuperar información, podemos enviar datos para indicar qué se desea recuperar, pero mediante get en principio no se debería generar nada, ningún tipo de recurso en el servidor o aplicación, porque los datos se verán en la URL y puede ser inseguro. Post: enviar datos que se indicarán en la propia. Esos datos no se verán en la solicitud, puesto que viajan con la información del protocolo. Put: esto sirve para enviar un recurso, subir archivos al servidor, por ejemplo. No está activo en muchas configuraciones de servidores web. Con put se supone que los datos que estamos enviando son para que se cree algún tipo de recurso en el servidor. Trace, patch, link, unlink, options y connect… no están entre los verbos comunes de Laravel, por lo que .htaccess e index.php
Para Laravel, queremos que todas las consultas terminen en el archivo index.php en la carpeta públic. Para llegar allí podemos usar una URL como esta:
http: //misitio.es/index.php/mipagina
Pero no es muy estético con este index.php en el medio. Si tiene un servidor Apache, cuando la solicitud del cliente llega al servidor donde se encuentra nuestra aplicación Laravel, primero pasa por el archivo .htaccess , si existe, que establece las reglas para el servidor. Hay un archivo .htaccess en la carpeta pública de Laravel con una regla de reescritura para que podamos tener una URL simplificada:
http: //misitio.es/mipagina
Un pequeño diagrama para visualizar esta acción:
Para que esto funcione, el servidor Apache debe tener activado el módulo mod_rewrite .
El ciclo de consulta
Cuando la solicitud llega al archivo public/index.php, se crea y configura la aplicación Laravel y se detecta el entorno. Luego se carga el archivo route/web.php. Aquí está la ubicación de este archivo:
Es con este expediente que la solicitud será analizada y dirigida. Veamos lo que encontramos allí al principio:
Route::get('/', function () {
return view('welcome');
});
Como Laravel se explica por sí mismo, ya puedes adivinar para qué sirve este código:
Route : usamos el enrutador, get : comprobamos si la petición tiene el método “get”, '/' : verificamos si la url contiene solo el nombre de dominio, en la función anónima devolvemos ( return ) una vista ( view ) del archivo de “bienvenida”. Este archivo de "bienvenida" está perfectamente almacenado en la carpeta de vistas:
Es este archivo con código Html el que genera el texto de bienvenida que obtienes cuando inicias Laravel por primera vez:
Laravel ofrece varios ayudantes que simplifican la sintaxis. Por ejemplo, hay una vista para la clase View como se ve en el código anterior.
Visualicemos el ciclo de consulta:
En su servidor local no tiene un nombre de dominio y utilizará una URL de la forma http: // localhost / tuto / public, suponiendo que haya creado Laravel en una carpeta www / tuto. Pero también puede crear un host virtual para tener una situación más realista como ya se mencionó.
Laravel acepta los siguientes verbos: get , post , put , patch , delete , options , match (para proporcionar varios verbos) y any (se aceptan todos los verbos).
Laravel acepta los siguientes verbos: get, post, put, patch, delete, options, any (aceptamos todos los verbos).
La ruta más básica en Laravel únicamente acepta la URI y un Closure, ofreciendo una forma muy sencilla y expresiva de definir rutas:
El archivo de rutas por defecto
Todas las rutas de Laravel se definen en los archivos que se encuentran en la carpeta routes. El framework carga estos archivos de forma automática. El archivo routes/web.php define las rutas para la interfaz web. A estas rutas se les asigna el grupo de middleware web, el cual proporciona algunas características como el estado de la sesión y la protección CSRF. Las rutas en routes/api.php no tienen estado y se les asigna el grupo de middleware api.
Para la mayoría de aplicaciones, se comenzará definiendo las rutas en el archivo routes/web.php.
Se puede acceder a las rutas definidas en routes/web.php simplemente escribiendo la URI definida en el navegador. Por ejemplo, se puede acceder a la siguiente ruta simplemente accediendo a http://tu-app.dev/user desde el navegador:
Verbos HTTP
Los métodos o verbos HTTP podrían llevarse un post completo, pero en resumen hay “verbos” que indican lo que se desea hacer. Entre ellos encontramos:
get: normalmente para obtener recursos o valores put: verbo usado para editar post: cuando vamos a agregar algo nuevo, normalmente un insert si lo vemos desde las bases de datos. Con este método se envían los formularios. delete: cuando vamos a eliminar algo. Ejemplos métodos
La clase Route (la fachada del sistema de rutas) tiene varios métodos estáticos con los verbos sobre los que queremos dar de alta una ruta de la aplicación. Anteriormente comentamos que estos métodos reciben dos parámetros, uno el patrón o URI que queremos registrar y otro la función con el código a ejecutar.
Route::get('/probando/ruta', function(){
//código a ejecutar cuando se produzca esa ruta y el verbo
return 'get';
});
Route::post('/probando/ruta', function(){
//código a ejecutar cuando se produzca esa rutay el verbo POST
return 'post';
});
Route::put('/probando/ruta', function(){
//código a ejecutar cuando se produzca esa rutay el verbo PUT
return 'put';
});
Route::delete('/probando/ruta', function(){
//código a ejecutar cuando se produzca esa rutay el verbo DELETE
return 'delete';
});
Usar varios verbos a la vez al registrar una ruta
Como puedes imaginar, existen casos en los que te puede interesar registrar una ruta que tenga validez con varios verbos, indicando una única función que los resuelva todos. Esto se puede conseguir mediante dos métodos distintos.
Route::match(['get', 'post, 'put''], '/testing', function () {
echo 'Ruta testing para los verbos GET, POST, PUT';
});
Como puedes apreciar, el método match requiere un parámetro adicional, el primero, en el que indicamos un array con los verbos que queremos aplicar a esta ruta.
Por otra parte tenemos el método any, que es como un comodín, que sirve para cualquier tipo de verbo del HTTP.