Las rutas procesan la solicitud entrante. Ahora veamos las respuestas que podemos enviar al cliente. Veremos el sistema de visualización de Laravel con la capacidad de pasar parámetros. También veremos cómo crear plantillas con la herramienta Blade.
Respuestas automáticas
Ya creamos respuestas cuando vimos el enrutamiento, pero no hicimos nada especial para eso, solo devolvimos una cadena como respuesta. Por ejemplo, si usamos esta ruta:
Route::get('test', function () {
return 'un test';
});
Interceptamos la url http: // misitio/ test y devolvemos la cadena "un test". Pero, por supuesto, Laravel detrás de escena crea una respuesta HTTP real.
Nos damos cuenta de que tenemos una solicitud completa con sus encabezados, pero no podemos intervenir en estos valores. Tenga en cuenta de paso que tenemos cookies, hablaremos de ellas nuevamente cuando veamos las sesiones.
El tipo de contenido indica el tipo MIME del documento devuelto, por lo que el navegador sabrá qué hacer con el documento según la naturaleza de su contenido. Por ejemplo:
text / html : página Html clásica texto / sin formato: texto simple sin formato aplicación / pdf : archivo pdf application / json : datos en formato JSON application / octet-stream : descarga de archivos
Ahora veamos cómo se ve si devolvemos una matriz:
Route::get('test', function () {
return ['uno', 'dos', 'tres'];
});
Esta vez recibimos una respuesta JSON:
Entonces, si desea devolver JSON, simplemente devuelva una matriz y ¡Laravel se encarga de todo!
Construir una respuesta
El funcionamiento automático es bueno, pero a veces queremos imponer valores. En este caso, debe usar una clase de Laravel para construir una respuesta. Como la mayoría de las veces tenemos un ayudante que nos evita declarar la clase en cuestión (en este caso es la clase Illuminate \ Http \ Response que hereda de la de Symfony: Symfony \ Component \ HttpFoundation \ Response ).
Route::get('test', function () {
return response('un test', 206)->header('Content-Type', 'text/plain');
})
Esta vez impongo un código (206: envío parcial) y un tipo MIME (texto / plano):
En el protocolo HTTP hay códigos para especificar respuestas. Estos códigos se clasifican en categorías amplias. Estos son los principales:
200 : consulta ejecutada con éxito, 404 : no se encontró el recurso solicitado, 503: servidor no disponible. De hecho, rara vez necesitará especificar los encabezados porque Laravel lo hace muy bien, pero puede ver que es fácil de hacer.
También puede agregar una cookie con el método de cookie.
Response
Podemos reenviar la respuesta de diferentes modos:
Reenvio a una ruta concreta: //fichero de rutas:
//ruta destino con nombre definido
Route::get('destino/{sitio}', function ($sitio) {
return "Destino: $sitio";
})->name('destino');
Reenvío a rutas con nombre o con URL: //código en el una fichero de rutas pero que podría ir en el controlador:
//reenvío ordinario por la URL
Route::get('teruel', function () {
return redirect('/destino/Teruel');
});
//reenvío por nombre
Route::get('zaragoza', function () {
return redirect()->route('destino', ['sitio' => 'Zaragoza']);
});
Reenvío a la misma ruta de la que venimos, e incluso añadir mensajes de error: //redirección simple:
return Redirect::back();
//igual pero con errores
return Redirect::back()->withErrors(['msg', 'The Message']);
//en la vista podríamos hacer:
@if($errors->any())
<h4>{{$errors->first()}}</h4>
@endif
Reenviar a un método de un controlador: //a un método sin argumentos
return redirect()->action('HomeController@index');
//con argumentos
return redirect()->action(
'UserController@profile', ['id' => 1]
);