Table des matières

Creer une API avec Symfony

On part du principe que Symfony est installé

On créé un projet

Le controlleur

CheckVersionController.php
<?php
namespace App\Controller;
 
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
 
class CheckVersionController
{
     /**
      * @Route("/api/checkv")
      */
    public function check()
    {
        return new Response('Ok ça marche...');
    }
}

Nom de fichier / Nom de Class

Il FAUT que le nom de la Class (ici : class CheckVersionController) soit identique au nom du fichier (ici : CheckVersionController.php)

Sinon :ERREUR

Les Routes en Annotations

On utilise les Routes en annotations :

Il ne faut pas oublier la clause use Symfony\Component\Routing\Annotation\Route;

Il sera peut etre utile d'executer composer require annotations

<?php
...
use Symfony\Component\Routing\Annotation\Route;
 
class CheckVersionController
{
     /**
      * Ci dessous la route http://xxxxx/api/checkv exécutera la function check()
      * @Route("/api/checkv")
      */
    public function check()
    {...}
}

Swagger

Dans le cadre de la programmation d'API au format OpenAPI, il sera utile d'installer Swagger-php qui permet de générer de la documentation conforme OpenAPI grâce a des Annotations

OpenAPI en Annotations

On modifie le code de notre controlleur avec les lignes ci-dessous :

<?php
...
use OpenApi\Annotations as OA;
 
class CheckVersionController
{
     /**
      * @Route("/api/checkv")
      * @OA\Get(
      *     path="/checkv",
      *     @OA\Response(
      *         response="200",
      *         description="version courante",
      *         @OA\JsonContent(
      *             type="string",
      *             description="version"
      *         )    
      *      )
      * )
      */
    public function check()
    {...}
}

Puis on lance la commande vendor\bin\openapi.bat –format json –output public\swagger\swagger.json swagger\swagger.php src pour mettre a jour le fichier de description au format OpenAPI public/swagger/swagger.json

D:\webprojects\test-api-project>vendor\bin\openapi.bat --format json --output public\swagger\swagger.json swagger\swagger.php src

Ressources