Ultima Laravel
Share
Explore

Verbos en las rutas de Laravel

Peticiones HTTP


image.png
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:
image.png

En las 10 solicitudes. Echemos un vistazo más de cerca al primero:
image.png
Encontramos:
el método: GET
el código: 200 (así que todo salió bien)
la versión de HTTP: 1.1
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.
Delete: borrado de algo.
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:
image.png
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:
image.png

Es con este expediente que la solicitud será analizada y dirigida. Veamos lo que encontramos allí al principio:
Route::get('/', function () {
return view('welcome');
});
image.png
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:
image.png
Es este archivo con código Html el que genera el texto de bienvenida que obtienes cuando inicias Laravel por primera vez:
image.png
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:
image19.png
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:

image6.png
image7.png

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:
image16.png

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.
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.
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.

Múltiples rutas y configuración de rutas

Tras la instalación, Laravel tiene una ruta única que corresponde a la URL base compuesta solo por el nombre de dominio. Ahora veamos cómo crear otras rutas. Imagina que tenemos 3 páginas que deben mostrarse con estas urls:
http://monsite.fr/ 1
http://monsite.fr/ 2
http://monsite.fr/ 3
He resaltado en negrita la parte específica de la URL de cada página. Es fácil lograr esto con este código:

image.png
Route::get ( '1' , function () { return '¡Soy la página 1!' ; }) ;
Route::get ( '2' , function () { return '¡Soy la página 2!' ; }) ;
Route::get ( '3' , function () { return '¡Soy la página 3!' ; }) ;
Esta vez no creé una vista porque lo que nos interesa solo es resaltar el enrutamiento, por lo que devuelvo la respuesta directamente al cliente. Visualicemos esto para la página 1:
image20.png
Solo necesitamos el carácter "/" en la ruta base.
Ahora podemos hacernos una pregunta: ¿realmente es imprescindible crear 3 rutas cuando la única diferencia es muy poca: un valor que cambia?

Decimos que la ruta está establecida porque tiene un parámetro que puede tomar cualquier valor.
Puede usar un parámetro para una ruta que acepte elementos variables usando llaves. Mira este código:
Route::get('{n}', function($n) {
return 'Soy la pagina ' . $n . ' !';
});
image.png
Y una visualización de cómo funciona:

image23.png
Decimos que la ruta está parametrizada porque tiene un parámetro que puede tomar cualquier valor.
Puede hacer que un parámetro sea opcional agregándole un signo de interrogación, pero no debe ir seguido de un parámetro obligatorio. En este caso, para evitar un error de tiempo de ejecución, se debe proporcionar un valor predeterminado para el parámetro, por ejemplo:
Route::get('{n?}', function($n = 1) {
image.png
El parámetro n se ha vuelto opcional y por defecto su valor es 1.

Error de tiempo de ejecución y restricción de ruta

En mi doble ejemplo anterior cuando digo que el resultado es el mismo miento un poco. ¿Qué sucede en ambos casos para esta url?
localhost/laravel/Proyecto/public/4

image.png

En el caso de las tres rutas te encuentras con un error: ¡En cambio en la versión con el parámetro obtienes una respuesta válida! Lo cual tiene sentido porque se encuentra una ruta. El parámetro acepta cualquier valor, no solo números. Por ejemplo con esta url:
localhost/laravel/Proyecto/public/cualquier cosa
Usted obtiene :
¡Soy la página cualquier cosa!
Para evitar este tipo de inconvenientes, se debe forzar el parámetro para que acepte solo ciertos valores. Esto se hace usando una expresión regular.

Expresiones Regulares

Es posible limitar el formato de los elementos dentro de los parámetros de una ruta usando el método where en una instancia de Route. El método where acepta el nombre del parámetro y la expresión regular que define como se debe limitar el parámetro:
Route::get('{n}', function($n) {
return 'Je suis la page ' . $n . ' !';
})->where('n', '[1-3]');
image.png
¡Ahora puedo decir que los comportamientos son idénticos! Pero tendremos que solucionar el problema de las rutas no planificadas.

Ruta con Nombre

A veces es útil nombrar una ruta, por ejemplo, para generar una url o para realizar una redirección. La sintaxis para nombrar una ruta es:
Route::get('/', function() {
return 'Soy la pagina de inicio!';
})->name('home');
image.png
Por ejemplo, para generar la url correspondiente a esta ruta, puede usar el asistente de ruta:
route('home')
Lo que generará la URL base del sitio en este caso: localhost/laravel/Proyecto
Una ventaja de usar rutas con nombre es que puede reorganizar las URL de un sitio sin tener que cambiar mucho código.

Orden de las rutas

¡Una cosa importante para saber es el orden de las rutas!
La regla es:
Las rutas se analizan en su orden en el archivo de ruta.
Mira estos dos caminos:
Route::get('{n}', function($n) {
return 'Soy la pagina ' . $n . ' !';
});
Route::get('contact', function() {
return Este es mi contacto.";
});
image.png
Laravel tiene un archivo .htaccess para simplificar la escritura de URL.
El sistema de enrutamiento es simple y se explica por sí mismo.
Los parámetros se pueden proporcionar en las rutas.
Puede forzar un parámetro para que coincida con una expresión regular.
Puede nombrar una ruta para facilitar la generación de URL y los redireccionamientos.

Enlaces :

Share
 
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.