4. Une première approche

Commençons par installer un composant qui va nous faire gagner du temps, le composant maker. 
Lancez la commande : 

composer require maker

 

Créons un premier contrôleur

Lancez la commande :

./bin/console make:controller

Nous allons appeller ce contrôleur : ApiController

Saisissez le nom et validez, puis ouvrez le fichier généré par Symfony :

<?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;

class ApiController extends AbstractController
{
    /**
     * @Route("/api", name="api")
     */
    public function index()
    {
        return $this->render('api/index.html.twig', [
            'controller_name' => 'ApiController',
        ]);
    }
}

Étant donné que l'on travaille avec une API, nous n'allons pas renvoyer des réponses avec Twig, mais plutôt des réponses au format JSON.

 

Ajoutons des données fictives

Commençons par créer une première donnée à renvoyer en JSON : 

<?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Routing\Annotation\Route;

class ApiController extends AbstractController
{
    /**
     * @Route("/api", name="api")
     */
    public function index()
    {
        $data = [
            'name' => 'iPhone X',
            'price' => 1000
        ];

        return new JsonResponse($data);
    }
}

Si vous essayez d'accéder à l'url http://localhost:8000/api avec Postman, vous devez avoir l'affichage suivant : 


 

Si vous regardez l'onglet headers, vous remarquerez que le Content-Type est déjà de type : application/json. Merci Symfony 😊


 

Félicitations, vous venez de renvoyer votre première réponse en JSON 😉

 

Nous allons avoir besoin de manipuler des entités pour avoir une API plus adaptée, c'est justement l'objet du prochain chapitre.