Table des matières
ToggleIntroduction
Dans ce projet, nous avons développé une API en utilisant Symfony et API Platform. Une des fonctionnalités essentielles de cette API est la gestion des données via les groups et les filtres, permettant d'adapter les réponses de l'API aux besoins des utilisateurs tout en optimisant l'accès aux informations.
Création de la Base de Données
Avant de pouvoir exploiter les groups et les filtres, nous avons mis en place une base de données pour stocker nos entités :
- Définition des Entités : Nous avons créé des entités clés comme
User
etMessage
. - Annotations des Propriétés : Chaque propriété a été annotée avec des métadonnées pour le mappage et des groups pour la sérialisation. Par exemple :
#[ORM\Column(type: 'string')]
#[Groups(['user:list', 'user:item'])]
private $nom;
Mise en Place des Groups
Une fois la base de données prête, nous avons défini des groups pour gérer la sérialisation :
- Message :
message:list
: Affiche les informations essentielles d'une liste de messages.message:item
: Fournit le détail complet d'un message.
- User :
user:list
: Affiche les informations de base d'une liste d'utilisateurs.user:item
: Détails complets d'un utilisateur.
Grâce à ces groupes, seules les informations nécessaires sont renvoyées, améliorant ainsi la performance et la sécurité.
Implémentation des Filtres
Pour rendre l'API plus dynamique, nous avons mis en place des filtres :
- Définition des Filtres : L'annotation
#[ApiFilter]
permet de filtrer des champs spécifiques. Pour l'entitéUser
, nous avons ajouté des filtres surid
,nom
etprenom
. - Types de Filtres :
- Exact : Permet une recherche stricte (ex.
id=1
). - Partiel : Permet une recherche approximative (ex.
prenom=s
).
- Exact : Permet une recherche stricte (ex.
- Combinaison de Filtres : Il est possible d'affiner les résultats en combinant plusieurs critères.
Tests et Validation
Après l'implémentation des groups et des filtres, nous avons testé leur bon fonctionnement à l'aide de Postman. Certains ajustements ont été nécessaires pour assurer la conformité des réponses de l'API avec les attentes des utilisateurs.