Aller au contenu principal

Les opérations

API Platform respectant les principes REST, on aura la possibilité d'activer/désactiver les opérations de notre choix sur une ressource donnée.

Par défaut, lorsqu'on ajoute l'attribut ApiResource sur une classe, API Platform active toutes les opérations REST sur cette ressource : les opérations de collection (GET, POST) et celles concernant une ressource seule (GET, PUT, PATCH, DELETE).

Activer seulement quelques opérations​

Pour activer seulement un sous-ensemble d'opérations, il suffit de les indiquer explicitement dans l'attribut ApiResource. À partir du moment où on indique les opérations qu'on souhaite activer, seulement ces opérations seront actives sur la ressource. Les autres seront désactivées.

Par exemple, si sur mes articles, je veux toutes les opérations sauf DELETE :

#[ApiResource(
operations: [
new Post(),
new GetCollection(),
new Get(),
new Put(),
new Patch()
],
normalizationContext: ['groups' => ['articles:read']]
)]
#[ApiFilter(BooleanFilter::class, properties: ['visible'])]
#[ApiFilter(SearchFilter::class, properties: ['title' => 'ipartial'])]
class Article
{
}
Verbes HTTP

On retrouve bien sûr les verbes HTTP qu'on utilise habituellement avec une API REST

PUT & PATCH​

Il semblerait que les opérations PUT (modification complète, remplacement de la ressource) & PATCH (modification partielle de la ressource) se comportent encore de la même façon : on peut envoyer la représentation partielle d'une ressource, et seulement les champs s'y trouvant seront mis à jour.

La seule différence est l'en-tête Content-Type à utiliser dans le cas d'un PATCH, qui doit être fixée à application/merge-patch+json.