Middleware HTTP global en Laravel 10.x — Amit Merchant — Un blog sobre PHP, JavaScript y más

Middleware HTTP global en Laravel 10.x — Amit Merchant — Un blog sobre PHP, JavaScript y más

A veces, cuando se trabaja con API de terceros, puede ser necesario agregar encabezados comunes a todas las solicitudes salientes. Por ejemplo, puede agregar un Authorization encabezado a todas las solicitudes salientes para autenticar las solicitudes.

El otro caso de uso más práctico sería agregar un User-Agent encabezado en todas las solicitudes salientes a las API de terceros. De hecho, algunas API requieren que agregue un User-Agent encabezado en la solicitud para identificar al cliente.

Este PR en Laravel 10.x presenta la capacidad de modificar todas las solicitudes salientes y las respuestas entrantes utilizando el middleware HTTP global.

Índice
  1. El middleware de consulta global
  2. Middleware de respuesta global
  3. El middleware del ciclo de solicitud y respuesta global
  4. Pensamientos finales

El middleware de consulta global

Así que si queremos agregar un User-Agent encabezado a todas las solicitudes salientes, podemos hacer esto creando un nuevo middleware de solicitud global en el boot Método de aplicación AppServiceProvider De este modo.

use Illuminate\Support\Facades\Http;

Http::globalRequestMiddleware(
    fn ($request) => $request->withHeader(
        'User-Agent', 
        'MyApp/1.0 (https://example.com) | [email protected]'
    )
);

Esto agregará el User-Agent encabezado a todas las solicitudes salientes.

Middleware de respuesta global

De manera similar, si desea agregar un middleware de respuesta global, puede hacerlo usando el globalResponseMiddleware método como este.

use Illuminate\Support\Facades\Http;

Http::globalResponseMiddleware(
    fn ($response) => $response->withHeader(
        'X-Response-Time', 
        $response->serverTiming()->totalDuration()
    )
);

El middleware del ciclo de solicitud y respuesta global

También puede registrar un middleware global que maneje todo el ciclo de solicitud y respuesta utilizando el globalMiddleware método como este.

use Illuminate\Support\Facades\Http;

Http::globalMiddleware(function ($handler) {
    return function ($request, $options) use ($handler) {
        $startedAt = now();

        return $handler($request, $options)
            ->then(fn ($response) => $response->withHeader(
                'X-Duration', $startedAt->diffInMilliseconds(now())
            ));
    };
});

Como puede ver, el middleware anterior agregará un X-Duration encabezado de respuesta que contendrá la duración de la solicitud en milisegundos.

Pensamientos finales

Creo que esta es una gran adición al marco, ya que le permitirá editar todas las solicitudes salientes y las respuestas entrantes en un solo lugar. También lo ayudará a mantener limpio su código SEC.

Si quieres conocer otros artículos parecidos a Middleware HTTP global en Laravel 10.x — Amit Merchant — Un blog sobre PHP, JavaScript y más puedes visitar la categoría Código.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Esta página web utiliza cookies para analizar de forma anónima y estadística el uso que haces de la web, mejorar los contenidos y tu experiencia de navegación. Para más información accede a la Política de Cookies . Ver mas