Faire tourner API Platform sur Propel : c'est possible !
À l’origine API Platform a été conçu pour se marier avec l’ORM Doctrine. Mais les infidélités sont possibles ! Grâce au travail de nos équipes nous avons réussi à créer un bridge pour adapter API platform à l’ORM Propel utilisé sur notre CMS e-commerce Thelia. Alexandre Nozière, CTO chez OpenStudio, connaît le sujet sur le bout des doigts, il vous explique comment il a réussi à faire tourner API Platform sur Propel.

Alexandre Nozière, CTO chez OpenStudio.
Au début du projet, l’objectif initial était simple : en intégrant API Platform à Thelia, nous aurions à disposition une API moderne et standardisée qui éviterait de développer une API spécifique à chaque nouveau projet. De cette manière, on évite un surcoût avec un développement sur mesure d’une API, on gagne du temps de maintenance et on s’émancipe des équipes back-end. Avec API Platform, les intégrateurs et développeurs sont en mesure de générer rapidement des endpoints cohérents, documentés et facilement exploitables côté front.
L’idée était aussi de capitaliser sur l’expertise d’API Platform qui fait, comme Thelia, parti de l’écosystème Symfony. Beaucoup de développeurs le connaissent déjà, maîtrisent sa syntaxe et ses conventions. Un développeur qui va travailler sur Thelia ne sera donc pas trop dépaysé avec l’utilisation d’API Platform.
Problème : Thelia ne repose pas sur Doctrine
Thelia utilise Propel comme ORM depuis plus de dix ans. Ce choix technique a été fait bien avant la généralisation de Doctrine dans l’écosystème Symfony. Aujourd’hui, le CMS et ses 320 modules reposent sur cette architecture.
Sur le papier, remplacer Propel par Doctrine pourrait sembler logique. En pratique, c’est un chantier colossal. Migrer Thelia vers Doctrine aurait représenté un ticket d’entrée extrêmement élevé et une réécriture massive, et cette migration n’était pas dans les priorités de la roadmap de Thelia.
L’intégration d’API Platform devait répondre à un besoin immédiat sans imposer une refonte complète de l’ORM. Nous avons donc fait un choix pragmatique en créant un bridge entre API Platform et Propel.
Faire fonctionner API Platform avec Propel
Le travail principal consistait à développer un bridge capable d’adapter les mécanismes internes d’API Platform à Propel.
Pas une ligne du code Doctrine d’API Platform n’est réutilisable. Nous avons donc tout réécrit, sans pour autant dupliquer API Platform. Nous n’avons pas touché au cœur d’API Platform : on décore et on injecte des services sans faire de forks.
L’objectif était de préserver la philosophie modulaire de Thelia. Nous ne voulions pas d’une API monolithique ou figée dans le cœur du CMS. Le bridge a donc été pensé pour permettre :
- l’ajout de ressources personnalisées,
- l’extension des endpoints,
- et l’intégration de modules métier spécifiques.
Repenser la logique des associations
L’un des plus gros sujets concernait la gestion des relations entre objets dans l’API.
Avec Doctrine, API Platform sait naturellement :
- charger des relations,
- gérer les associations,
- construire certaines requêtes automatiquement.
Avec Propel, il a fallu reconstruire cette logique et adapter les requêtes, reproduire les comportements attendus, tout en conservant les conventions d’API Platform.
Un front autonome et une ouverture de Thelia
L’un des bénéfices les plus intéressants de cette adaptation de l’API à Propel est l’autonomie donnée au développeur front, qui peut désormais interroger directement les routes produits sans nécessairement demander l’intervention d’une couche back-end intermédiaire spécifique.
Nous avons testé API Platform sur le projet Les Jardins de Mado, et les résultats sont très intéressants. Ce fonctionnement allège les développements back, mais il améliore aussi les performances et simplifie les échanges entre le front et Thelia.
Cette approche facilite également l’intégration avec des ERP, des logiciels de caisse, des applications métiers, ou des outils tiers autonomes. L’API devient un véritable point d’entrée standardisé vers l’écosystème Thelia.
Un chantier compatible avec l’avenir de Thelia
Ce travail s’inscrit dans une démarche plus globale de modernisation de Thelia. L’objectif de Thelia 3 est notamment de se rapprocher davantage de l’écosystème Symfony moderne. L’intégration d’API Platform constitue donc une étape importante dans cette évolution.
Le choix de conserver Propel aujourd’hui ne ferme aucune porte. Nous n’avons pas réécrit le cœur d’API Platform. Nous avons construit une couche d’adaptation. Autrement dit si une évolution vers Doctrine s’impose un jour, le travail réalisé aujourd’hui avec ce bridge restera compatible avec cette transition.
API Platform s’émancipe de Doctrine
Faire fonctionner API Platform sans Doctrine pouvait sembler contre-nature. Pourtant, cette adaptation à Propel est un succès, puisque nous avons moderniser Thelia sans s’imposer une refonte complète de son architecture historique.
En développant un bridge entre API Platform et Propel, nous avons réussi à conserver la stabilité de l’existant, moderniser l’exposition des données, et rapprocher Thelia des standards actuels de l’écosystème Symfony.
Le résultat : une API moderne, extensible et familière pour les développeurs habitués à API Platform, tout en restant pleinement compatible avec l’ADN technique de Thelia.