3 - Exposer des données avec ApiPlatform
Start up
Comme souvent, tout commence par l'installation d'un package:
ApiPlatform à l'énorme avantage d'être 100% intégré à l'écosystème Symfony (et donc Doctrine).
Par défaut, pour transformer une Entity en ressource Api, il vous suffit d'une ligne de code à ajouté sur votre entité.
Exemple pour notre entité User, qui ressemble actuellement à:
Il suffit de lui ajouter une annotation pour la transformer en une API complète:
Vous venez de dire à ApiPlatform que votre User est une API.
En interne, ApiPlatform fait plusieurs choses:
Il "crée" tous les controllers pour la gestion de vos Users (création/édition/suppression)
Il défini une documentation propre (visible sur /api/docs)

Vous pouvez ainsi appeler /api/users et avoir la liste de tous vos utilisateurs:
On peut voir ici un premier soucis: le mot de passe ressort dans notre API. Même s'il est crypté, on ne devrait pas le renvoyer.
Pour cela on peut utiliser deux méthode lié au Serializer Symfony:
Les groups de sérialization
L'attribut de serialization #[Ignore]
Exemple avec l'attribut:
Le password sera désormais ignoré dans votre API (que ce soit en lecture ou en écriture)
Il est possible d'avoir plus de granularité via l'attribut ApiProperty:
Par exemple, dans notre cas, on précise que la propriété email est uniquement readable.
Cette attribut ne gère pas que ça, n'hésitez pas à l'explorer plus en profondeur !
Limiter les opérations exposés
Par défaut, l'attribut #[ApiResource] expose toutes les requête REST existantes:
Deux en méthode
GET:Une pour récupérer une collection (
/api/users)Une pour récupérer un objet en particulier: (
/api/users/{uuid})
Une méthode
POST: Pour créer un objet (/api/users)Une méthode
PATCH: Pour modifier partiellement un objet (/api/users/{uuid})Une méthode
PUT: Pour modifier complètement un objet (/api/users/{uuid})Une méthode
DELETE: Pour supprimer complètement un objet (/api/users/{uuid})
C'est changeable on appliquant seulement les requêtes que l'on souhaite:
Last updated