Symfony 4 est la dernière version du framework PHP de SensioLabs. Nous allons voir à travers cet article comment créer un système d’API rapidement avec cette version du framework. Comme pré-requis, il faut avoir php et composer installés sur votre système ainsi qu’une base de données que nous allons nommer « blog ».
Introduction de Symfony Flex
Symfony Flex est le nouvel outil qui permet l’automatisation de la plupart des tâches pour intégrer une nouvelle dépendance (installation, mise à jour, suppression et configuration). L’automatisation est réalisée à l’aide de « recipes » qui contiennent les directives à lancer pour la gestion de la dépendance. Les recipes sont disponibles sur le site Web https://symfony.sh .
Comment cela fonctionne concrètement?
C’est assez simple au niveau du développement, il suffit d’utiliser la commande traditionnelle `composer require <nom>`, donc jusque là rien ne change. La différence se situe dans le fait que composer va d’abord regarder si le nom demandé est associé à une recipe si oui, il va utiliser les directives de cette dernière. Dans le cas contraire, composer va utiliser classiquement le dépôt packgist afin de récupérer la dépendance.
Installation du projet Symfony
Afin d’installer notre projet, nous allons partir d’une recipe qui délivre une base de travail pour notre système d’API. La recipe qui nous intéresse est « api-platform/api-pack », nous voyons sur le site qu’il existe des alias au nom de cette recette « api » ou « api-platform ».
# Initialisation du projet composer create-project symfony/skeleton blog cd blog # Ajout du serveur interne de Symfony composer require server --dev # Ajout de notre plateforme d'API (on peut utiliser un alias ou le nom de la recette) composer require api # Lancer le serveur Web Interne php bin/console server:run
Vous devez maintenant configurer votre base de données dans le fichier .env à la racine de votre projet :
# Configuration de votre BDD (changer les valeurs en fonction de votre configuration) DATABASE_URL=mysql://vincent:vincent@127.0.0.1:3306/blog
Le setup est maintenant terminé et si vous tentez d’accéder à l’URL (remplacer éventuellement l’adresse par votre configuration) : `http://127.0.0.1:8000/api`, vous aurez la page suivante :
A ce stade, la plateforme est fonctionnelle mais rien n’est configuré, nous allons créer maintenant un exemple basique d’API.
Création de nos entités
Dans notre exemple, les APIs vont servir les entités de notre application, nous allons donc commencer par définir notre entité blog.
Pour information, Symfony 4 a changé de philosophie et n’embarque plus tous les composants possibles, nous allons pour nous simplifier la vie installer l’outil `maker` qui va nous permettre du code source (en respectant l’architecture proposé par défaut par Symfony) à partir de la console.
# Au niveau de la racine du projet lancer la commande suivante composer require maker --dev
Ensuite nous pouvons créer notre entité à l’aide de l’outil make fournit par Symfony
php bin/console make:entity
J’ai renseigné les informations demandé par le prompt afin d’obtenir l’entité suivante :
A ce stade, nous avons notre entité qui est généré dans /src/Entity/Blog.php.
Nous allons modifier cette entité pour indiquer à API platform de la gérer en tant que ressource d’API.
Pour ce faire, il suffit d’importer une annotation (ligne 5) et d’utiliser l’annotation @ApiResource dans l’entête de la classe (ligne 9).
<?php namespace App\Entity; use Doctrine\ORM\Mapping as ORM; use ApiPlatform\Core\Annotation\ApiResource; /** * @ORM\Entity(repositoryClass="App\Repository\BlogRepository") * @ApiResource */ class Blog { /** * @ORM\Id() * @ORM\GeneratedValue() * @ORM\Column(type="integer") */ private $id; ///////////////////////////////////////// // Le reste du code de notre entité... ///////////////////////////////////////// }
Et voilà! Nous pouvons maintenant nous rendre sur la page `http://127.0.0.1:8000/api` et nous pouvons remarquer que le système a automatiquement généré nos APIs :
Pour information, vous pouvez voir le détail des opérations en cliquant sur une opération, par exemple voici le détail de la partie GET :
Cette interface fournit la possibilité également de tester directement vos API, ce qui est très pratique. Nous pouvons remarquer aussi, que le système fournit plusieurs formats possibles dont notamment json, html, xml, etc…
Vous pouvez maintenant utiliser des outils comme Postman pour interagir avec ces APIs.
Conclusion
Symfony 4 et API Platform fournissent la possibilité de mettre en place un système d’API très simplement. Nous reviendrons dans une prochaine série d’articles sur une utilisation plus avancé d’API Platform (personnalisation des routes, API custom, etc…).
0 commentaire