Acciones después de cada petición o antes de entregar el Response en Laravel | Middelware After

\
MIDDLEWARE LARAVEL
Texto para entender el post

Realmente no encuentro que nombre ponerle al post, pero este articulo sera de gran utilidad en caso de que se quiera hacer algún tipo de proceso antes de entregarle el response al usuario o mejor dicho antes de que termine la petición.

Es decir es hacer algo antes del momento exacto de entregarle la respuesta al usuario, como ejemplo pongo el mio que necesitaba eliminar unos archivos de la carpeta storage en cada petición pero este proceso tenia que ejecutarse siempre y al final de todos los procesos, sin importar que hubiera una excepción. Siempre.


En versiones anteriores de laravel exactamente en la 4.2 se habla de lo eventos de aplicacion donde se indica que se pueden usar las funciones.

App::before(function($request)
{
    //
});

App::after(function($request, $response)
{
    //
});

y que pueden ser definidas en los service provider, citando algo de la documentación es

Los oyentes de estos eventos se ejecutarán beforeaftercada solicitud a su aplicación. Estos eventos pueden ser útiles para el filtrado global o la modificación global de las respuestas.
Pero en la versión actual de laravel que es 5.5 esto ya no existe el trabajo de las anteriores funciones fueron delegadas a los middleware.

Ahora los middlware son los encargados de interceptar las peticiones cuando entrar o salen.

Entonces en ese orden de ideas es necesario crearse un middleware registrarlo en el kernel y aplicarlo a la ruta o el controlador, eso es al gusto, aunque desde mi punto de vista es mejor a las rutas pero si seria busno aplicarle un middleware a los contraladores es mas crear middlewares especialmente para las rutas y otros para los controladores eso aria mucho mas segura la aplicacion.



Ya tiendo creado el middleware y para mi caso se ve asi>

<?php

namespace App\Http\Middleware\api;

use Closure;

class AfterRequestApi
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
            
        $response  =  $next($request);         
        \App\Repository\Operations\Signature\Sigature::cleanWorkSpace();
        return $response;
    }
}


Entonces primero obtengo el response con $next luego hago lo lo que tenga que hacer en mi caso limpiar una carpeta del storage, y luego reportar el response para que sea entregado al usuario. Y pues eso lo que dice la documentacion en la seccion de Before & After Middleware.




0 Comentarios