Blog
Partie 3 - Passage à un projet logiciel complet - Développement de la partie serveur avec API Platform
Une fois que j’avais appris à utiliser Symfony et mis en place les premières entités, j’ai intégré API Platform, un outil extrêmement puissant qui permet de transformer une application Symfony en API REST complète, sans avoir à coder manuellement chaque route, contrôleur ou format de réponse.
Ce qui m’a d’abord impressionné, c’est la simplicité d’utilisation : en ajoutant quelques annotations ou attributs PHP à mes classes d’entités, API Platform expose automatiquement des routes comme GET /api/rocket_modules, POST /api/rocket_modules, etc. Cela m’a permis de gagner un temps considérable, tout en respectant les standards de l’architecture REST.
Par exemple, en exposant mes entités comme RocketModule, RocketSubModule ou RocketMotionScript, j’ai immédiatement obtenu des routes pour les consulter, les créer, les modifier ou les supprimer. De plus, API Platform génère automatiquement une documentation interactive (avec Swagger UI) que j’ai pu utiliser pour tester les requêtes et vérifier le bon fonctionnement de l’API.
J’ai également découvert que l’on pouvait configurer très finement les opérations disponibles sur chaque entité : on peut, par exemple, autoriser seulement les lectures (GET), ou bien restreindre l’écriture (POST, PUT, DELETE) aux utilisateurs authentifiés. Ces règles peuvent être définies avec des expressions Symfony (comme is_granted(‘ROLE_USER’)), ce qui permet de gérer très précisément les droits d’accès.
Un autre aspect très utile d’API Platform est sa gestion de la sérialisation : il est possible de choisir quels champs sont exposés dans les réponses ou acceptés dans les requêtes grâce aux groupes de normalisation/dénormalisation. Cela m’a permis de cacher certaines informations sensibles (comme l’utilisateur associé à une entité) ou de structurer les réponses pour qu’elles soient plus claires côté client.
J’ai aussi pu tirer parti des filtres automatiques proposés par API Platform : en configurant quelques annotations, il devient possible de filtrer les résultats avec des paramètres dans l’URL (par exemple : GET /api/rocket_modules?owner.id=1). Cela simplifie énormément le travail côté frontend, car je n’ai pas besoin d’écrire des routes personnalisées pour chaque cas.
L’API ainsi construite a été le cœur du lien entre le backend Symfony et le frontend JavaScript. Grâce à elle, mon application web peut envoyer des requêtes HTTP, créer de nouveaux modèles de fusées, lancer des simulations, enregistrer des scripts de mouvement, et récupérer des résultats — tout cela de façon sécurisée, avec des permissions bien définies.
En parallèle, j’ai aussi pris soin de tester mes routes manuellement via Swagger, puis en JavaScript avec fetch() et mon gestionnaire d’authentification personnalisé (RocketAuthentication). Chaque test m’a permis de peaufiner les réponses, d’ajouter des validations, ou de corriger des oublis de configuration dans les entités.
Je me suis aidé de l’outil Postman pour débugger mes appels à l’Api. Postman permet de créer des requêtes HTTP vers le serveur et de voir tout ce qu’il se passe simplement :

Synthèse
API Platform a profondément simplifié le développement de l’API de mon projet, tout en m’obligeant à structurer proprement mes entités et à penser à la sécurité dès le départ. J’ai appris à créer une API REST moderne, documentée, filtrable, et sécurisée. C’est cette couche qui permet désormais à mon interface web de communiquer efficacement avec la base de données, de manière fluide et évolutive.