API Platform
Introduction à la création d'API REST en PHP avec Symfony
Notions théoriques
API Platform est un framework open-source basé sur Symfony, conçu pour simplifier la création d'API REST.
Il permet aux développeurs de concevoir rapidement des API robustes, sécurisées et conformes aux standards actuels.
Parmi ses fonctionnalités clés, on trouve :
- la génération automatique de la documentation,
- le support des formats courants (JSON, XML, JSON-LD, etc.)
- et l'intégration facile avec des outils comme Swagger ou GraphQL.
Concepts clés
Voici quelques concepts clés d'API Platform :
-
API REST : Une API REST (Representational State Transfer) permet de créer des services web qui suivent des principes spécifiques, tels que l'utilisation de méthodes HTTP standard (GET, POST, PUT, DELETE) et la manipulation de ressources identifiées par des URI.
-
Symfony et Doctrine : API Platform repose sur le framework Symfony, un des plus populaires pour le développement d'applications web en PHP. Il utilise également Doctrine pour l'interaction avec les bases de données.
-
Entité et Ressource : Dans API Platform, une entité représente une table de la base de données, tandis qu'une ressource correspond à une entité exposée via l'API. Chaque ressource a un ensemble d'actions disponibles (ex. : GET pour récupérer une ressource, POST pour en créer une nouvelle).
-
Annotations : API Platform permet de définir des comportements d’API via des annotations dans le code PHP, ce qui simplifie la configuration des routes, des contrôleurs et des réponses.
-
Documentation automatique : Grâce à l'intégration de Swagger/OpenAPI, API Platform génère automatiquement la documentation de votre API. Vous pouvez y tester les différentes routes directement depuis l'interface web.
-
Formats supportés : L’un des atouts d’API Platform est le support de plusieurs formats de données, notamment JSON-LD (utilisé par défaut), JSON, XML et CSV, permettant de rendre votre API interopérable avec diverses applications.
Pourquoi utiliser API Platform ?
- Gain de temps : API Platform permet de générer rapidement des API fonctionnelles avec peu de configuration.
- Respect des standards : Il respecte les bonnes pratiques du développement d'API REST, tout en offrant une flexibilité pour personnaliser votre API.
- Sécurité : Intégré avec Symfony, il offre des mécanismes de sécurité robustes (authentification via JWT, contrôle d'accès, etc.).
Exemple pratique
Création d'une API simple
Nous allons créer une API qui expose une ressource Book
. Chaque livre aura un titre, un auteur et un résumé.
Voici comment mettre en place cette API (en quelques étapes) avec API Platform et Symfony.
Étapes :
- Créer une entité Book :
// src/Entity/Book.php
namespace App\Entity;
use ApiPlatform\Metadata\ApiResource;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity]
#[ApiResource]
class Book
{
#[ORM\Id, ORM\GeneratedValue, ORM\Column(type: 'integer')]
private ?int $id = null;
#[ORM\Column(type: 'string', length: 255)]
private string $title;
#[ORM\Column(type: 'string', length: 255)]
private string $author;
#[ORM\Column(type: 'text')]
private string $summary;
// Getters et setters...
}
- Configurer la base de données :
- Mettre à jour le schéma de la base de données pour inclure l'entité
Book
en utilisant la commande Doctrine :
- Mettre à jour le schéma de la base de données pour inclure l'entité
php bin/console doctrine:database:create
php bin/console doctrine:migrations:migrate
- Tester l'API :
- Lancer le serveur Web intégré à PHP sur le port 8000 :
php -S localhost:8000 -t public
- Aller à
http://localhost:8000/api
pour accéder à la documentation interactive générée automatiquement.
L’API est maintenant opérationnelle et permet d’effectuer des requêtes GET, POST, PUT et DELETE sur la ressource Book
.
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
Création d'une API REST pour une bibliothèque
Objectif : Créer une API qui permet de gérer une collection de livres et d'auteurs.
L'API doit permettre de :
- créer, lire,
- mettre à jour
- et supprimer des livres et des auteurs.
Chaque livre doit être associé à un ou plusieurs auteurs.
Instructions :
-
Créer une entité
Author
:- Chaque auteur doit avoir un nom et une biographie.
-
Créer une relation entre
Book
etAuthor
:- Un livre peut avoir plusieurs auteurs, et un auteur peut avoir écrit plusieurs livres.
-
Configurer les routes pour permettre la gestion des auteurs via l'API :
- Assurez-vous que l'API supporte les opérations CRUD (Create, Read, Update, Delete) sur les auteurs et les livres.
-
Testez votre API :
- Utilisez l'interface Swagger pour tester les différentes opérations sur vos ressources
Book
etAuthor
.
- Utilisez l'interface Swagger pour tester les différentes opérations sur vos ressources
À faire :
- Ajouter au moins 5 livres et 3 auteurs.
- Tester les relations entre les livres et les auteurs (par exemple, récupérer tous les livres d'un auteur spécifique).
Une solution
Vous devez être connecté pour voir le contenu.