API Platform ? Mais c'est quoi en fait
API Platform est un framework web, open-source basé sur Symfony, conçu pour faciliter la création d'APIs RESTful et GraphQL. Il offre des fonctionnalités prêtes à l'emploi qui réduisent le temps de développement tout en garantissant la flexibilité.
API Platform génère automatiquement des endpoints, des contrôles de validation, et même une documentation interactive grâce à Swagger ou OpenAPI, rendant le développement plus efficace.
Récemment d'ailleurs, API Platform peut être facilement installé sur de nouveaux ou des projets Laravel existants, comme précisé sur la documentation officielle.
Fonctionnalités et caractéristiques clés
- Création d'API REST grâce au CRUD automatisé
- Enregistrement automatique des routes
- Génération automatique de points d'entrée, avec accès à toute les ressources
- Hypermedia (JSON-LD, HAL)
- Documentation API au format Hydra, Swagger/Open Api, extraction des métadonnées PHPDoc, Serializer, Validator, ainsi que des ORM Doctrine et ODM MongoDB
- Gestion de lecture Elasticsearch
- Une sandbox accessible via SwaggerUI / ReDoc
- Des filtres de recherche, de tris, un système de pagination...
- Un système avancé sur la Serialization (support des "groups", relations, max depth)
- Des Validateurs avec le support des "groups", utilisant le composant Symfony Validator
- Un système de gestion avancé des règles d'authentification et d'accès
- Serialization des erreurs
- Prise en charge de l'authentification JWT et OAuth
et plein d'autres...
Pourquoi choisir API Platform pour vos projets ?
Aujourd'hui, il existe de nombreuses solutions web pour réaliser des applications. Chez Koul, on est fan (absolus) de Symfony / PHP et surtout du projet API Platform qu'on l'utilise pour tous nos projets API, complexes ou non.
Vous avez des projets robustes, scalables et avec des standards de l'industrie grâce au travail collaboratifs des contributeurs/trices
Simplicité et Rapidité : API Platform est conçu pour automatiser le processus de création d'API. Il génère automatiquement des endpoints CRUD basés sur vos entités, ce qui réduit considérablement le temps de développement.
Documentation Intégrée : Grâce à l'intégration de Swagger et OpenAPI, la documentation de votre API est générée instantanément, facilitant la collaboration avec d'autres développeurs ou équipes métier.
Flexibilité et Extensibilité : API Platform peut être facilement personnalisé pour répondre à des besoins spécifiques, et il s'intègre parfaitement aux fonctionnalités et composants Symfony.
REST et/ou GraphQL : vous avez le choix
API Platform prend en charge à la fois REST et GraphQL, offrant aux développeurs une flexibilité totale pour construire leurs APIs. Ces deux technologies ont des avantages distincts, permettant de répondre à différents besoins en matière de gestion des données.
REST : REST est une architecture bien établie qui repose sur des ressources accessibles via des endpoints. Il est idéal pour les opérations standardisées de type CRUD, où chaque endpoint renvoie un ensemble de données complet.
GraphQL: GraphQL, quant à lui, permet de requêter des données de manière plus fine. Les clients peuvent spécifier exactement les données dont ils ont besoin, ce qui réduit la quantité de données transférées et optimise les performances, particulièrement utile pour les applications nécessitant des réponses légères et rapides.
Performance et Optimisation
Cache HTTP et Validation : API Platform intègre des en-têtes ETag et Cache-Control pour optimiser les performances en réduisant le nombre de requêtes.
Optimisation de la Sérialisation : La sérialisation, comme vous l'avez vu plus haut peut être ajustée pour améliorer les performances, en ne sélectionnant que les champs nécessaires à chaque requête.
Personnalisation et Extensibilité
API Platform est hautement extensible. Vous pouvez personnaliser les opérations, utiliser des événements pour intercepter le cycle de vie d'une requête, et ajouter des fonctionnalités spécifiques en fonction de vos besoins.
Événements et Listeners : Les événements permettent d’ajouter de la logique avant ou après certaines actions de l’API, vous offrant un contrôle granulaire sur les opérations.
Voyons voir, dans la technique, comment cela se passe avec un mini tutoriel maison.