image de chargement
Retour au glossaire

API Platform

Framework PHP pour créer des APIs REST et GraphQL hypermedia-driven

Mis à jour le 3 janvier 2026

API Platform est un framework PHP open-source conçu pour construire rapidement des APIs web modernes. Basé sur Symfony, il automatise la création d'APIs REST et GraphQL conformes aux standards, en générant automatiquement la documentation OpenAPI, les interfaces d'administration et les clients JavaScript. API Platform implémente nativement les principes HATEOAS et JSON-LD pour créer des APIs auto-descriptives et découvrables.

Fondements

  • Architecture API-first basée sur les annotations ou attributs PHP pour définir les ressources et leurs opérations
  • Support natif des formats hypermedia (JSON-LD, HAL, JSON:API) et génération automatique de la documentation OpenAPI/Swagger
  • Intégration profonde avec Symfony et Doctrine ORM pour la persistance, validation et sérialisation des données
  • Génération automatique d'interfaces d'administration React et de clients TypeScript/JavaScript via des générateurs de code

Avantages

  • Réduction drastique du temps de développement grâce à la génération automatique de code et aux conventions intelligentes
  • APIs conformes aux standards REST et hypermedia (niveau 3 de Richardson Maturity Model) sans effort supplémentaire
  • Écosystème riche avec filtrage, pagination, validation, sécurité et cache intégrés dès le départ
  • Interface d'administration automatique permettant aux non-développeurs de gérer les données sans code
  • Support GraphQL natif avec résolution automatique des requêtes à partir des entités Doctrine

Exemple concret

src/Entity/Product.php
<?php

namespace App\Entity;

use ApiPlatform\Metadata\ApiResource;
use ApiPlatform\Metadata\Get;
use ApiPlatform\Metadata\GetCollection;
use ApiPlatform\Metadata\Post;
use ApiPlatform\Metadata\Put;
use ApiPlatform\Metadata\Delete;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;

#[ORM\Entity]
#[ApiResource(
    operations: [
        new Get(),
        new GetCollection(),
        new Post(security: "is_granted('ROLE_ADMIN')"),
        new Put(security: "is_granted('ROLE_ADMIN')"),
        new Delete(security: "is_granted('ROLE_ADMIN')")
    ],
    paginationItemsPerPage: 30
)]
class Product
{
    #[ORM\Id]
    #[ORM\GeneratedValue]
    #[ORM\Column(type: 'integer')]
    private ?int $id = null;

    #[ORM\Column(type: 'string', length: 255)]
    #[Assert\NotBlank]
    #[Assert\Length(min: 3, max: 255)]
    public string $name;

    #[ORM\Column(type: 'decimal', precision: 10, scale: 2)]
    #[Assert\NotBlank]
    #[Assert\Positive]
    public float $price;

    #[ORM\Column(type: 'text', nullable: true)]
    public ?string $description = null;

    #[ORM\Column(type: 'datetime_immutable')]
    public \DateTimeImmutable $createdAt;

    public function __construct()
    {
        $this->createdAt = new \DateTimeImmutable();
    }

    public function getId(): ?int
    {
        return $this->id;
    }
}

Cette simple entité génère automatiquement une API REST complète avec endpoints CRUD, documentation OpenAPI interactive, validation des données, pagination, et sérialisation JSON-LD. L'attribut ApiResource configure les opérations disponibles et les règles de sécurité, tandis que les contraintes de validation Symfony sont automatiquement appliquées.

Mise en œuvre

  1. Installer API Platform via Composer dans un projet Symfony ou utiliser la distribution Docker complète
  2. Créer les entités Doctrine avec les attributs #[ApiResource] pour exposer automatiquement les endpoints
  3. Configurer les opérations (Get, Post, Put, Delete, Patch) et les règles de sécurité via les attributs ou fichiers de configuration
  4. Personnaliser la sérialisation avec des groupes de normalisation/dénormalisation pour contrôler les champs exposés
  5. Implémenter des filtres personnalisés pour le tri, la recherche et le filtrage des collections
  6. Configurer les extensions et événements pour ajouter de la logique métier (calculs, validations complexes, hooks)
  7. Générer les clients TypeScript/React et la documentation OpenAPI pour la distribution aux équipes frontend

Conseil professionnel

Utilisez les Data Transfer Objects (DTO) avec API Platform pour découpler votre modèle de données interne de votre API publique. Créez des Input/Output DTO distincts via l'attribut input/output d'ApiResource pour contrôler précisément ce qui est exposé et accepté, facilitant ainsi l'évolution de votre schéma de base de données sans casser les contrats API existants.

Outils associés

  • Symfony - Framework PHP sous-jacent fournissant les composants de base (routing, validation, sécurité)
  • Doctrine ORM - Gestionnaire de persistance pour la manipulation des entités et génération des schémas de base de données
  • API Platform Admin - Interface d'administration React générée automatiquement à partir des ressources API
  • API Platform Client Generator - Outil CLI pour générer des clients TypeScript, React, Vue.js ou Next.js
  • Mercure - Protocole de publication/abonnement pour ajouter des fonctionnalités temps réel aux APIs
  • Vulcain - Mécanisme de préchargement HTTP/2 pour optimiser les performances des APIs hypermedia

API Platform représente un investissement stratégique pour les organisations cherchant à accélérer leur transformation digitale. En réduisant de 70% le temps de développement des APIs tout en garantissant le respect des standards et bonnes pratiques, il permet aux équipes techniques de se concentrer sur la valeur métier plutôt que sur le code répétitif. Son écosystème mature et sa communauté active en font un choix solide pour des architectures API-first pérennes et évolutives.

L'argentestdéjàsurlatable.

En 1 heure, découvrez exactement combien vous perdez et comment le récupérer.