Creer une API avec Symfony
On part du principe que Symfony est installé
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
Vous pourriez laisser un commentaire si vous étiez connecté.