Aller au contenu principal

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 :

  1. 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.

  2. 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.

  3. 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).

  4. 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.

  5. 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.

  6. 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 :

  1. 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...
}
  1. 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 :
php bin/console doctrine:database:create
php bin/console doctrine:migrations:migrate
  1. 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


Qu'est-ce qu'une API REST ?


Quelle méthode HTTP est utilisée pour récupérer une ressource ?


Que représente une entité dans API Platform ?


Quel format est utilisé par défaut par API Platform pour la réponse des API ?


Quelle annotation est utilisée pour exposer une entité comme ressource API dans API Platform ?



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 :

  1. Créer une entité Author :

    • Chaque auteur doit avoir un nom et une biographie.
  2. Créer une relation entre Book et Author :

    • Un livre peut avoir plusieurs auteurs, et un auteur peut avoir écrit plusieurs livres.
  3. 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.
  4. Testez votre API :

    • Utilisez l'interface Swagger pour tester les différentes opérations sur vos ressources Book et Author.

À 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