API Platform: State processors
20 November 2022 (Updated 20 November 2022)
In a nutshell
State processors are classes that receive an instance of a class marked as an API resource (e.g., typically using the #[ApiResource]
attribute), and used to persist or update records in a data store (e.g., MySQL database).
You typically use state processors to handle POST
, PUT
, PATCH
, or DELETE
operations. State processors were released in API Platform 3 and replaced the previous data persistors API.
An example state processor
1. Create a state processor
Assuming you have the Symfony MakerBundle installed, you can run the below to quickly create a custom state processor:
bin/console make:state-processor
An example state processor looks like the following:
<?php
namespace App\State;
use App\Entity\BlogPost;
use ApiPlatform\Metadata\Operation;
use ApiPlatform\State\ProcessorInterface;
class BlogPostProcessor implements ProcessorInterface
{
/**
* {@inheritDoc}
*/
public function process($data, Operation $operation, array $uriVariables = [], array $context = [])
{
// call your persistence layer to save $data
return $data;
}
}
2. Configure operation to use the processor
<?php
namespace App\Entity;
use ApiPlatform\Metadata\Post;
use App\State\BlogPostProcessor;
#[Post(processor: BlogPostProcessor::class)]
class BlogPost {}
Sources
Tagged:
API Platform
Thanks for your comment 🙏. Once it's approved, it will appear here.
Leave a comment