Retour sur l'API Platform Con 2023 - jour 1
Publié le 28 septembre 2023
La semaine dernière, plus de 300 personnes ont franchi le parvis d'Euratechnologies pour assister à la troisième édition tant attendue de l'API Platform Con, le rassemblement des expert·es de notre écosystème. Entre des conférences inspirantes, des moments mémorables avec nos partenaires et une soirée communautaire inoubliable, il est temps de revenir sur les temps forts de cette première journée de talks.
Opening Keynote - Kévin Dunglas
En introduction à cette API Platform Conférence 2023, Kévin a présenté FrankenPHP fraîchement sorti en première version bêta !
FrankenPHP est un tout nouveau serveur d’applications PHP, écrit en Go et basé sur Caddy, qui simplifie drastiquement les déploiements d’applications PHP, et introduit de nouvelles fonctionnalités à PHP telles que :
- Un mode worker qui améliore grandement les performances applicatives
- Le support natif de HTTP/3
- Le support natif du nouveau Status Code HTTP 103 Early Hints
- La génération et renouvellement automatique des certificats HTTPS
- Le support natif du protocole Mercure
- Et plus encore !
FrankenPHP est disponible en image Docker (Debian, Alpine, PHP 8.2, et PHP 8.3) et en binaire avec zéro dépendance compatible avec Linux et macOS.
API Platform, open data et schemaless API - Xavier Leune
Qu’est-ce que l’open data et comment l’intégrer dans API Platform ? L'ancien président de l'AFUP nous a tout d’abord présenté l’open data, et comment ce principe est mis en place en France. Puis, il nous a fait un retour d’expérience sur son projet de présentation de données complexes grâce à open data.
En nous présentant son workflow de développement, Xavier Leune nous montre les différents outils utilisés à chaque étape de la préparation de la donnée, allant de la création des fichiers RDF, l’optimisation des requêtes SQL à travers différents modèles de structuration de données, jusqu’à la gestion du cache HTTP.
Enfin, Xavier nous a illustré sa contrainte ultime : comment intégrer de nouvelles données sans le moindre développement ?
Comment utiliser une Materialized View PostgreSQL avec API Platform ? - Damien Levallois
Damien Levallois part de la problématique de performances relative aux requêtes SQL et comment une Materialized View PostgreSQL vient en solution.
Grâce à Doctrine, Damien nous montre comment mettre cette solution en place dans un projet API Platform, et ses avantages et inconvénients.
Partant de son projet de gestion de stock de véhicules, il nous fait un retour d’expérience permettant de simplifier son architecture logicielle et l’amélioration de son moteur de recherche. Il nous présente les problématiques de synchronisation et mise à jour des données, et vient avec une solution grâce à Symfony Messenger et API Platform.
Developing an API without API Platform - Alexandre Salomé
Et si on essayait de développer une API sans utiliser API Platform ? C’est le défi que s’est lancé Alexandre Salomé pour cette conférence ! Des contrôleurs aux différents services, Alexandre se lance dans la création d’une API sans jamais utiliser API Platform, et nous montre comment architecturer correctement le code grâce aux événements Symfony.
Le bilan est sans appel : bien que le code produit reste simple, il manque beaucoup de fonctionnalités : négociation de contenu, pagination, et autres options disponibles nativement dans API Platform !
Fun fact : l’architecture qu’il a choisie de suivre grâce aux événements Symfony est exactement celle suivie par API Platform…sans même qu’il le sache !
Cache HTTP pour les API REST - David Buchmann
Après une comparaison pleine d’humour entre du cache HTTP et la réponse qu’on pourrait donner à la sempiternelle question “quand est-ce qu’on arrive ?” lors d’un voyage avec des enfants, David Buchmann nous a rappelé les bases et les bonnes pratiques en matière de cache. Il a également donné des exemples de mise en pratique avec API Platform et Symfony.
Converting a legacy app to API Platform - Boas Falke & Holger Dörner
Dans une conférence mettant en scène la quête épique de Webby face aux hordes de vilains du dragon legacy, Boas et Holger nous font le récit d’une longue migration vers API Platform.
Durant ce talk, ils nous ont montré que si les “bonnes pratiques” sont essentielles, certains problèmes spécifiques imposent parfois de s’écarter de ce chemin balisé, et surtout que Webby fut leur plus fidèle et efficace compagnon lors de cette aventure.
Valider vos données avec API Platform - Thibaut Arnoud
Thibaut Arnoud nous a d’abord présenté comment valider nos ressources API à l'aide de l'intégration avec le composant Validator de Symfony. Il nous a rappelé l’utilisation des contraintes fournies par Symfony, l’ajout et l’utilisation de contraintes personnalisées ainsi que l’utilisation des groupes de validation. Il nous a ensuite rappelé que l’opération Delete n’était pas validée par défaut mais qu’il était possible de le faire soit en ajoutant un Processor personnalisé soit via de la configuration à partir de la version 3.2 d’API Platform.
Thibaut a aussi abordé la validation des types. Afin d’éviter une erreur de typage PHP dans le cas où le type de la donnée envoyée ne correspond pas à celui de la propriété, le Serializer de Symfony est capable de détecter cette différence et de renvoyer une erreur correcte au client grâce à l’option collect_denormalization_errors
.
Enfin, Thibaut nous a présenté JSON Schema et son intégration dans API Platform. Cette spécification permet de décrire la forme d’un document JSON afin de valider qu’une requête JSON respecte le format décrit.
API Platform revolution - Antoine Bluchet
Antoine Bluchet nous a tout d’abord présenté les dernières nouveautés introduites dans API Platform 3.2, notamment un meilleur respect des standards, le découpage d’API Platform en composants et autres fonctionnalités innovantes !
Puis, après un petit voyage dans le temps montrant tout le chemin parcouru depuis les premières versions d’API Platform, Antoine introduit une nouvelle approche dans API Platform 3.2 permettant de se découpler des événements Symfony : la composition grâce aux Processors et Providers.
Enfin, Antoine nous présente deux avancées très importantes dans l’écosystème d’API Platform : une meilleure documentation grâce à Diataxis et son exécution dans le navigateur en WebAssembly, et le travail en cours pour le support de Laravel !
Need for Speed: Removing speed bumps in API Projects - Łukasz Chruściel
Łukasz Chrusciel nous a parlé des performances dans nos applications web et en particulier dans API Platform, pour la rapidité de nos applications, mais aussi pour la planète. Selon un sondage, le plus gros problème de performance de nos applications viendrait des connexions au système de fichier, à la base de données, etc.
Il nous a tout d’abord parlé de complexité algorithme (Big-O Complexity) pour ensuite faire le rapprochement avec nos bases de données et l’importance d’optimiser les relations entre les entités.
Pour finir, il nous a présenté le principe de Atomic Objects (Edge Side API), qui est utilisé nativement sur API Platform. Ce principe consiste à ne pas récupérer toutes les données des relations et, à la place, fournir une URL ou récupérer facilement les informations de la relation. Il a pris en exemple Sylius pour montrer les optimisations qui ont été mises en place pour améliorer les performances de l’API de la plateforme.
Gestion de webhooks standardisés avec API Platform, OpenAPI et Symfony Webhook - Allison Guilhem
Après un bref rappel des standards des API web (REST, linked data etc), Allison Guilhem nous a ensuite présenté le fonctionnement des webhooks, d’abord en tant que callback à une requête API, puis avec l’idée de faire des push indépendants de toute requête HTTP initiale.
Nous avons vu ensuite les tentatives de standardisation des webhook avec notamment OpenAPI 3.1
Allison nous a enfin présenté la PR qu’elle propose sur API Platform, notamment pour gérer les webhook en tant que ressource API et les documenter facilement dans nos attributs.
Finalement, c’est plutôt une bonne situation “webhook” !
API Platform, Svelte et un max de buzzwords - Alex Rock
Alex Rock nous a détaillé point par point sa recette éprouvée par l’expérience pour créer des sites plus performants et maintenables, basée notamment sur API Platform, EasyAdmin, Tailwind et Svelte.
Tracking user activity logs using Loggastic - Paula Čučuk
Paula Čučuk nous a présenté Loggastic, un outil open source permettant de logger toutes les modifications CRUD apportées à nos entités, qui les a apportées, quand, et quelles étaient les modifications. Et les enregistrer dans une table dédiée (à terme d’autres adapters devraient voir le jour).
Ces changements sont également indexés dans un Elasticsearch pour les retrouver rapidement. L’outil Loggastic prévoit une visualisation dans un template Twig et une intégration à API Platform pour pouvoir les récupérer directement via une ressource API.
Subresources, the easy way with API Platform 3 - Mathias Arlaud
Qu’est-ce qu’une subresource ? Cette notion complexe en API Platform 2 a été totalement revue pour API Platform 3. Mathias Arlaud nous présente ce qu’est une subresource, à la fois au niveau des standards mais aussi dans API Platform.
Profitant de la coupe du monde de rugby pour illustrer ses propos, Mathias nous montre différents cas d’usage avec des subresources, les problématiques rencontrées et les solutions à mettre en place grâce à API Platform : itemUriTemplate, links, uriVariables, opérations multiples, etc.
Les subresources sont également une solution idéale face à la problématique de l’over-fetching, et permettent de mieux respecter les standards, grâce aux options proposées dans API Platform.
Un pas vers la décentralisation, reprenons le contrôle grâce à OIDC ! - Vincent Chalamon
Connaissez-vous la différence entre identification, authentification et autorisation ? C’est, entre autres, ce que Vincent Chalamon nous a présenté dans sa conférence sur OpenID Connect, un protocole d’identification en surcouche à OAuth.
Après un bref résumé des origines historiques de ces protocoles, Vincent a ensuite détaillé les spécifications qu’ils implémentent et leur importance en termes de sécurité. Usurpant l’identité de Kévin Dunglas en pleine conférence (😂), il nous a montré l’importance de l’authentification multifacteur et sa différence avec l’authentification forte.
Enfin, en quelques slides, Vincent a mis en place une authentification et identification OIDC dans un projet API Platform grâce à Symfony, NextAuth.js et Keycloak.
Retrouvez le détail de sa conférence et plus encore dans son article sur notre blog (également disponible en anglais) : https://les-tilleuls.coop/blog/un-pas-vers-la-decentralisation-reprenons-le-controle-grace-a-oidc et rendez-vous très prochainement pour la suite de notre compte-rendu !
Crédits photos : Nicolas Detrez