FOSRestBundle le programme d'installation pour le retour JSON, mais demande toujours template Twig

J'ai configuré FOSRestBundle comme suit:

#FOSRestBundle
fos_rest:
    param_fetcher_listener: true
    body_listener: true
    format_listener:
        rules:
            - { path: ^/, priorities: [ json, html ], fallback_format: ~, prefer_extension: true }
        media_type:
            version_regex: '/(v|version)=(?P<version>[0-9\.]+)/'

    body_converter:
        enabled: true
        validate: true

    view:
        mime_types:
            json: ['application/json', 'application/json;version=1.0', 'application/json;version=1.1']
        view_response_listener: 'force'
        formats:
            xml:  false
            json: true
        templating_formats:
            html: true

    exception:
        codes:
            'Symfony\Component\Routing\Exception\ResourceNotFoundException': 404
            'Doctrine\ORM\OptimisticLockException': HTTP_CONFLICT
        messages:
            'Symfony\Component\Routing\Exception\ResourceNotFoundException': true
    allowed_methods_listener: true
    access_denied_listener:
        json: true

Et j'ai ce au contrôleur:

namespace PDI\PDOneBundle\Controller\Rest;

use FOS\RestBundle\Controller\FOSRestController;
use Nelmio\ApiDocBundle\Annotation\ApiDoc;
use FOS\RestBundle\Controller\Annotations\QueryParam;
use FOS\RestBundle\Controller\Annotations\Get;

class RepresentativeRestController extends FOSRestController
{
    /**
     * Get all representatives.
     *
     * @return array
     *
     * @ApiDoc(
     *   resource = true,
     *       https = true,
     *   description = "Get all representatives.",
     *   statusCodes = {
     *      200 = "Returned when successful",
     *      400 = "Returned when errors"
     *   }
     * )
     * @Get("/api/v1/reps")
     */
    public function getRepsAction()
    {
        $em = $this->getDoctrine()->getManager();
        $entities = $em->getRepository('PDOneBundle:Representative')->findAll();

        if(!$entities)
        {
            return $this->view(null, 400);
        }

        return $this->view($entities, 200);
    }
}

Mais quand j'essaie de l'URL suivante app_dev.php/api/v1/reps j'ai eu cette erreur:

Impossible de trouver le modèle "". 500 Internal Server Error -
InvalidArgumentException 3 lié Exceptions: Twig_Error_Loader »
InvalidArgumentException » InvalidArgumentException »

J'attends que l'API de retour d'un bien formé JSON comme l'exemple suivant:

{
   "id":"30000001",
   "veeva_rep_id":"0055648764067SwzAAE",
   "display_name":"John Know",
   "avatar_url":"http://freelanceme.net/Images/default%20profile%20picture.png",
   "rep_type":"VEEVA",
   "username":"[email protected]",
   "first":"John",
   "last":"Know",
   "title":"Sales Representative",
   "phone":"800-555-1212",
   "email":"[email protected]",
   "territory_id":"200454001",
   "inactive":"no",
   "total_contacts":"6",
   "total_shares":"0",
   "totalViews":"0",
   "lastLoginAt":"2015-05-05 15:45:57",
   "lastVeevaSyncAt":"2015-05-05 15:45:57",
   "createdAt":"2015-05-05 15:45:57",
   "updatedAt":"2015-05-05 15:45:57"
}

N'est pas FOSRestBundle configuré pour le retour JSON? Pourquoi toujours demander de template Twig? Comment puis-je résoudre ce problème?

Premier test:

@Jeet suggèrent moi, j'ai essayé d'utiliser le Facteur (qui est le même que l'extension, il m'a dit) et après la tête Content-Type à application/json l'erreur se transforme en ce

Mal formé JSON

donc, le FOSRestBundle n'est pas de mise des en-têtes comme devrait l'être et le contrôleur n'est pas un retour JSON valide, comment puis-je corriger?

Deuxième test:

Comme suggéré par @Jeet j'ai l'exécution de ce test:

/**
 * Get all representatives.
 *
 * @return array
 *
 * @ApiDoc(
 *   resource = true,
 *       https = true,
 *   description = "Get all representatives.",
 *   statusCodes = {
 *      200 = "Returned when successful",
 *      400 = "Returned when errors"
 *   }
 * )
 * @Get("/api/v1/reps")
 * @View()
 */
public function getRepsAction()
{
    $em = $this->getDoctrine()->getManager();
    $entities = $em->getRepository('PDOneBundle:Representative')->findAll();

    $temp = array("1", "2", "3");

    $view = $this->view($temp, Codes::HTTP_OK);
    return $this->handleView($view);
}

Et toujours le même problème:

Impossible de trouver le modèle "". 500 Internal Server Error -
InvalidArgumentException 3 lié Exceptions: Twig_Error_Loader »
InvalidArgumentException » InvalidArgumentException »

Quoi d'autre peut être le problème ici? Ne me manque quelque chose dans la configuration?

J'ai oublié d'ajouter app/config/routing.yml et src/PDI/PDOneBundle/Resources/config/routing.yml au premier abord donc, ici, va, c'est peut-être la pièce manquante du puzzle et vous donner une meilleure idée d'où vient le problème:

#app/config/routing.yml
#PDOne
pdone:
    resource: "@PDOneBundle/Resources/config/routing.yml"

template:
    resource: "@TemplateBundle/Resources/config/routing.yml"

#FOSUserBundle
fos_user:
    resource: "@FOSUserBundle/Resources/config/routing/all.xml"
    prefix: /

#NelmioApiDocBundle:
NelmioApiDocBundle:
    resource: "@NelmioApiDocBundle/Resources/config/routing.yml"
    prefix:   /api/doc

#SonataAdmin
admin:
    resource: '@SonataAdminBundle/Resources/config/routing/sonata_admin.xml'
    prefix: /admin

_sonata_admin:
    resource: .
    type: sonata_admin
    prefix: /admin

#src/PDI/PDOneBundle/Resources/config/routing.yml
pdone:
    resource: "@PDOneBundle/Controller/"
    type:     annotation
    prefix:   /

Troisième test:

Certainement quelque chose de mal avec la demande du client, si j'utilise un outil comme Postman et de définir des en-têtes que j'ai les entités que je veux, voir photo ci-dessous:

FOSRestBundle le programme d'installation pour le retour JSON, mais demande toujours template Twig

Je ne trouve pas où le problème est que j'ai désespérément besoin de l'aide de quelqu'un ici, parce que j'étais déjà d'idées

Avez-vous d'installation "Content-Type "être" application/json"?
où je devrais le faire? N'est pas à la configuration de FOSRes comme vous pouvez le voir sur l'OP?
Essayez app_dev.php/api/v1/répétitions dans Google Chrome Avancée du Reste de l'application Client (application de l'extension), là, vous aurez une option.
voir l'OP, j'ai édité l'ajout de quelques infos
FOSRestBundle est responsable de définir l'en-tête de la réponse qu'elle envoie au client. Mais son client(APPLICATION Mobile, le client REST extension) est un devoir de corriger les valeurs d'en-tête lors de l'envoi au serveur. Le FOSRestBundle peut réagir en conséquence. 😉

OriginalL'auteur ReynierPM | 2015-05-08