Loading...

Añadir cabeceras "custom" a la Response de Symfony

2024-02-25
  • php
  • response
  • symfony

En el desarrollo de una API REST con Symfony, es crucial poder personalizar y modificar las respuestas antes de que sean devueltas al cliente. En este artículo vamos a ver cómo modificar la response antes de ser enviada para añadir “custom headers”.

Con Symfony esto lo podemos conseguir creando un EventListener que nos permitirá realizar modificaciones en las headers de las respuestas.

Sigue leyendo y descubre cómo agregar un toque personalizado a las respuestas de tu API REST.

Modificando las headers de la response

Para personalizar cada una de las respuestas en una API REST, podemos crear una clase que actúe como EventListener. En nuestro ejemplo, utilizaremos una clase llamada ResponseListener, que modificará los HTTP headers y agregará un header personalizado antes de devolver la respuesta.

Snap.png

En este código, creamos la clase ResponseListener con un constructor que recibe el kernel y el servicio del log (LoggerService). Mas adelante, implementamos el método onKernelResponse que captura la respuesta, modifica las headers y agrega una cabecera personalizada ("X-Custom-Header" en este caso)

Configurando el EventListener

Para asegurarnos de que nuestra clase ResponseListener intercepte todas las respuestas y realice las modificaciones correspondientes, hay que hacer algunos cambios en el archivo services.yaml

Hay que agregar las siguientes líneas:

Snap (1).png

En esta configuración, utilizamos la directiva tags para indicar que nuestra clase es un event listener que escuchará todos los eventos de tipo kernel.response y que debe ejecutar el método onKernelResponse que está definido en nuestra clase.

Conclusión

Personalizar y modificar las respuestas en una API REST es una herramienta valiosa para agregar una capa de profundidad. Symfony ofrece la flexibilidad de utilizar los EventListeners para realizar ajustes en las headers de las respuestas antes de que sean devueltas al cliente.

Aprovecha esta funcionalidad para agregar custom-headers, realizar acciones adicionales o garantizar la coherencia en tus respuestas.