Symfony_Rest

Servicio REST en symfony

Primero creamos una ruta asegurémonos de que quede de primero en la el controlador del producto o lo que queramos mostrar:

   /**
     * Lists all Product entities in Rest Service.
     *
     * @Route("/rest", name="product_rest")
     * @Method("GET")
     */
    public function restAction()
    {

    }

Luego dentro de la función debemos asegurarnos de escribir:

$em = $this->getDoctrine()->getManager();
$products = $em->getRepository(‘AcmeStoreBundle:Product’)->findAll();
//Just convert array to JSON and return result
return new Response(json_encode(array(‘productos’ => $products)));

Con esto tenemos un servicio REST de consulta sencillo:

Captura de pantalla de 2016-04-28 00-02-50

Al tener más valores de productos se puede ver:

Captura de pantalla de 2016-04-28 00-14-25

El código refinado incluye referencias a los namespaces:

use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Serializer\Serializer;
use Symfony\Component\Serializer\Encoder\XmlEncoder;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;

Y la función final quedó de la manera:

/**
     * Lists all Product entities in Rest Service.
     *
     * @Route("/rest", name="product_rest")
     * @Method("GET")
     */
    public function restAction()
    {
      $encoders = array(new XmlEncoder(), new JsonEncoder());
      $normalizers = array(new ObjectNormalizer());
      $serializer = new Serializer($normalizers, $encoders);
      $em = $this->getDoctrine()->getManager();
      $products = $em->getRepository('AcmeStoreBundle:Product')->findAll();
      $jsonContent = $serializer->serialize($products, 'json');
      //Just convert array to JSON and return result
      return new Response(json_encode(array('productos' => $jsonContent)));
    }