Я работаю с Api-Platform 2.5 и Symfony 4.4 (lts).
Я обнаружил платформу API и понимаю, что существует много "перехватчиков", которые перехватывают запросы HTTP:
для GET
запросов: поставщик данных, контроллер, процесс сериализации и, наконец, «анонимный процесс», который устанавливает код ответа.
для POST
, PUT
, PATCH
и DELETE
: процесс сериализации, поставщик данных, контроллер, хранилище данных и, наконец, «анонимный процесс», устанавливающий код ответа.
Здесь у меня есть хранилище данных:
ProductDataPersister :
namespace App\DataPersister;
use ApiPlatform\Core\DataPersister\ContextAwareDataPersisterInterface;
use App\Entity\Product;
final class ProductDataPersister implements ContextAwareDataPersisterInterface
{
public function supports($data, array $context = []): bool
{
return $data instanceof Product;
}
public function persist($data, array $context = [])
{
//dd('persist');
return $data;
}
public function remove($data, array $context = [])
{
//dd('remove');
}
}
В этом случае ни сохранение, ни удаление не приводит к созданию базы данных, поскольку это должно быть сделано вручную путем введения менеджера сущностей и т. Д. c.
У меня такой вопрос, как мы говорим, что действие удаления с этим кодом никогда не удаляет Продукт, и это то, что я хочу. Но ответ, который я получаю на запрос DELETE
, все еще не переопределен и по-прежнему возвращает 204
код состояния ( без содержимого ).
Я хочу переопределить тип ответа. Какой другой слушатель исполняется после Data Persister?
Можно ли переопределить?