L’API Platform Con a eu lieu les 21 et 22 septembre derniers, à Lille et en ligne. À cette occasion, plusieurs sujets techniques ont attiré mon attention.
Qu’est-ce que API Platform ?
API Platflorm est un framework Web permettant de concevoir en PHP des API REST ou GraphQL rapidement et avec facilité.
Les Early Hints
Les Early Hints correspondent aux réponses HTTP de code 103. Introduits à titre expérimental par la RFC 8297, ils permettent au serveur d’envoyer au client une réponse 103 indiquant les ressources (scripts, feuilles de styles, images…) pouvant être chargées par le client durant la préparation par le serveur de la réponse finale.
Les Early Hints permettent d’importants gains de performance en termes de temps de chargement des pages, jusqu’à plus de 30 %.
Ils sont supportés par Apache à partir de la version 2.4, mais ne sont pas supportés sur NGINX.
Côté client, ils sont supportés par la plupart des navigateurs.
FrankenPHP (Kévin Dunglas)
FrankenPHP est un serveur Web « tout-en-un », regroupant PHP, le serveur Web Caddy et un SAPI écrit en Go.
Qu’est-ce qu’un SAPI (Server application programming interface) ? À lui seul, PHP n’est pas capable de communiquer en HTTP. Il a pour cela besoin d’un serveur Web, tel qu’Apache ou NGINX pour citer les plus connus. Le SAPI est l’interface permettant de faire le lien entre PHP et le serveur Web. On utilise communément PHP-FPM pour cela, Apache module (déprécié), CGI…
Cependant, PHP-FPM a plusieurs inconvénients :
- Il ne supporte pas les Early Hints.
- Il n’est pas conçu pour du real-time ou des connexions longues : Websocket, SSE et webtransport sont mal supportés.
- C’est un service externe, parfois compliqué à configurer ou à installer.
FrankenPHP supporte toutes ces fonctionnalités, et son installation est très simple. Un seul service Docker est nécessaire, et le serveur ne dépend pas de services externes.
Étant basé sur le serveur Web Caddy, FrankenPHP bénéficie donc de toutes ses fonctionnalités :
- Configuration HTTPS automatique
- Support des versions HTTP 1, 2 et 3
- Compression Gzip et Zstd
- …
Les webhooks (Allison Guilhem)
Les webhooks consistent en un système de notification basé sur HTTP, largement utilisé dans de nombreux domaines tels que les paiements en ligne, les réseaux sociaux ou le logging.
Leur fonctionnement repose sur l’abonnement du client HTTP au webhook, matérialisé par l’envoi d’une requête POST au webhook contenant notamment l’URL à notifier.
Malgré leur adoption généralisée, les webhooks souffrent d’un manque de standardisation, entraînant parfois des problèmes de gestion de charge et de sécurité.
Cela est amené à changer, car plusieurs initiatives ont été prises pour établir des normes communes dans la mise en place des webhooks.
OpenAPI 3.1 implémente désormais la possibilité de les définir de manière standardisée :
Symfony propose quant à lui le composant webhooks pour faciliter la mise en place et la consommation de webhooks.
Concernant API Platform, une PR a été proposée pour gérer les webhooks en tant que ressources API.