Añadir cabeceras "custom" a la Response de Symfony
- 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.
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:
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.