change de nom...
Codéin, expert en développement Symfony, utilise API Platform dans ses projets. En tant que sponsor et participant à l'API Platform Conference 2024, nous avons eu l’occasion de plonger au cœur des discussions techniques.
Cet événement, destiné avant tout à un public technique expérimenté, s'est distingué par la qualité de son contenu, en faisant un rendez-vous incontournable pour les professionnels du secteur. Pour vous faire revivre les moments clés des conférences, nous avons préparé une série d’articles. Que vous soyez un développeur aguerri ou simplement curieux des dernières innovations autour des API, on espère vous inspirer et vous donner des pistes pour vos projets.
Ces articles condensent nos notes avec les points les plus intéressants que nous avons retenus.
Dans ce premier article, nous vous proposons un retour détaillé sur la keynote d'ouverture.
Kévin Douglas est le fondateur de la scop Les-Tilleuls.coop et créateur de solutions open-source telle que : Api Platform, Mercure, Franken PHP, Volcain et bien d'autres !
Depuis la version 2, API Platform est devenu une bibliothèque PHP standalone, permettant son utilisation en dehors de tout framework. Vous pouvez désormais l'installer et l'utiliser sans être lié à un framework spécifique. Pour savoir comment l'implémenter de manière indépendante, consultez la documentation détaillée ici : https://api-platform.com/docs/core/bootstrap.
API Platform simplifie la création d'API REST tout en facilitant l'extension de ses composants, en respectant les standards de l'industrie comme JSON-LD/RDF, JSON, HAL, ainsi que diverses RFCs. Il prend en charge une large gamme de bases de données, notamment PostgreSQL, MongoDB, ElasticSearch, SQLite, MySQL, MariaDB, SQL Server et Oracle.
Depuis la version 4 d’API Platform, deux intégrations officielles sont proposées :
Symfony et Laravel sont tous deux considérés comme des first-class citizens, avec le même niveau de support et de fonctionnalités.
Kevin a mentionné pendant le talk que la plupart des features sont disponibles à approximativement ~90% pour les deux frameworks.
Les intégrations de Symfony et Laravel partagent la même base de code. API Platform utilise un monolithic api-platform/core repository avec une gestion via read-only subtree, garantissant une mise à jour centralisée et uniforme pour les deux frameworks.
* use ApiPlatform\Doctrine\Orm\Filter\BackedEnumFilter;
*
* #[ApiResource]
* #[ApiFilter(BackedEnumFilter::class, properties: ['status'])]
* class Book
Ce modèle dissocie entièrement la logique de persistance des données de la logique métier. Un mapper est responsable de la gestion de la liaison entre les objets et la base de données, ce qui permet une flexibilité accrue etfacilite les tests.
Dans ce modèle, chaque objet est directement associé à une table de la base de données. Les opérations CRUD (Create, Read, Update, Delete) sont intégrées directement dans les objets, simplifiant ainsi la gestion de la persistance des données.
Dans le contexte du Laravel, API Platform effectue automatiquement une pré-requête de la base de données (colonnes, types, contraintes...) pour générer les métadonnées essentielles à la génération des ressources API ainsi qu'à la documentation OpenAPI et Hydra. Ces métadonnées sont mises en cache afin d'optimiser les performances.
1. Installer la dépendence API Platform :
2. Créer un modèle Eloquent intitulé par exemple Book en héritant de la classe Illuminate\Database\Eloquent\Model. 3. Générer une migration et l'exécuter :
4. Exposer le modèle en utilisant l'attribut #[ApiResource], et instantanément, nous obtiendrons une API fonctionnelle avec une spécification OpenAPI, accessible via Swagger UI. |
API Platform met à disposition de Laravel plusieurs built-in filters pour simplifier les recherches :
Pour garantir l'intégrité des données, API Platform se charge de la validation de ces filtres
Possibilité d'ajouter des filtres personnalisés et d'en valider les valeurs, ou alors décorer les filtres existants.
Pour connecter un filtre sur une ressource existante, il est recommandé l'utilisation de QueryParameter plutôt qu'ApiFilter pour plus de flexibilité. Cela pourrait changer dans la prochaine version majeure.
API Platform est hautement configurable :
use ApiPlatform\Metadata\ApiResource;
use Illuminate\Database\Eloquent\Model;
#[ApiResource]
class Book extends Model
{
/**
* Les attributs qui doivent être masqués.
*
* @var array
*/
protected $hidden = ['isbn'];
}
API Platform s’intègre nativement avec les mécanismes d'authentification de Laravel, prenant en charge :
Ces intégrations permettent de gérer divers niveaux de sécurité et d'authentification, selon les besoins.
Pour autoriser des opérations comme POST, PATCH, ou PUT tout en validant les entrées utilisateur, vous pouvez générer une classe Form Request via :
php artisan make:request BookFormRequest
Cette approche permet de centraliser la validation des données, ce qui rend le code plus maintenable et sécurisé. Pour plus de détails, n'hésitez pas à consulter la documentation à l'adresse suivante : https://laravel.com/docs/11.x/validation#creating-form-requests
Un autre sujet abordé est FrankenPHP, un serveur d'applications PHP performant, écrit en GO qui :
Pour l'utiliser avec le framework Laravel :
composer require laravel/octane
php artisan octane:install --server=frankenphp
php artisan octane:frankenphp
Chez Codéin, nous apprécions API Platform pour sa flexibilité et sa capacité à s'intégrer facilement dans nos projets Symfony, et nous l'utilisons régulièrement à cet effet. L'ajout du support pour Laravel nous ouvre de nouvelles perspectives, notamment pour des projets internationaux.