Acceso a tu server Symfony desde múltiples clientes
La forma mas eficiente y escalable de crear un servicio con Symfony es usando una API para que nuestros múltiples vistas o clientes web, apps, de todos los dispositivos, incluso el uso de bots de redes sociales, bots de chats como Telegram y demás, podríamos de manera muy fácil tomar los datos de nuestra web brindándose a través de json a todos los múltiples clientes.
En el caso de symfony se puede usar para esto Symfony Rest Bundler, con este podemos tener los datos en formato JSON, sin embargo en esta entrada hablaremos de como mostrar el JSON a los diferentes clientes sin usar un bundler para ello.
Lo primero es que necesitamos resolver el problema del “Access-Control-Allow-Origin” este nos impide que desde un cliente que no sea enviado por el mismo server web poder acceder a los datos del mismo, para resolverlo solo ponemos en el __constructor() de symfony el header() como sigue:
header(‘Access-Control-Allow-Origin:*’);
header(“Access-Control-Allow-Headers: X-API-KEY, Origin, X-Requested-With, Content-Type, Accept, Access-Control-Request-Method”);
header(“Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE”);
header(“Allow: GET, POST, OPTIONS, PUT, DELETE”);
Con header() le decimos al servidor que muestre los datos de JSON aun cuando el cliente no haya sido entregado (hosteados) por el server donde esta nuestro symfony, como es el caso de tener un despliegue en Heroku y una vista en Vercel usando Vue con Axios o Angular con el HttpConnect y pedir los datos al server que corre en Heroku.