Installation.
Installer Symfony skeleton.
composer create-project symfony/skeleton nomDuProjet
Se positionner dans le dossier.
cd nomDuProjet
Installer le bundle API Platforme.
composer require api
Configurer le .env et céer la base de données.
bin/console doctrine:database:create
bin/console doctrine:schema:create
Initialiser l’api ressource dans chaque entités.
use ApiPlatform\Core\Annotation\ApiResource;
// puis l'atribut php8 (annotation(
#[ApiResource]
Ne pas oublier d’importer la classe ApiRessource.
use ApiPlatform\Core\Annotation\ApiResource;
Lancer le serveur PHP.
php -S 127.0.0.1:8000 -t public
// ou
bin/console server:start
Se connecter à API Platform depuis un navigateur.
La sérialisation
Les contextes de normalisation.
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use App\Repository\PostRepository;
use ApiPlatform\Core\Annotation\ApiResource;
/**
* @ORM\Entity(repositoryClass=PostRepository::class)
*/
#[ApiResource(
normalizationContext: ['groups' => ['read:collection']]
)]
class Post
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
#[Groups(['read:collection'])]
private $title;
/**
* @ORM\Column(type="string", length=255)
*/
#[Groups(['read:collection'])]
private $slug;
/**
* @ORM\Column(type="text")
*/
#[Groups(['read:collection'])]
private $content;
/**
* @ORM\Column(type="datetime")
*/
private $createdAt;
Limiter les items.
Ici on limite les opérations seulement à la méthode GET ( ne donne plus accès à PUT, DELETE et PATCH)
/**
* @ORM\Entity(repositoryClass=PostRepository::class)
*/
#[ApiResource(
itemOperations:[
'get'
]
)]