Я пытаюсь создать настраиваемое действие / контроллер / операцию в Api-платформе.
По сути, мне нужно настраиваемое действие, задокументированное в Swagger, но не как ApiResource
, поскольку тело JSON, которое получает действиене имеет соответствующей сущности в базе данных.
Тело будет выглядеть примерно так:
[
{
"someEntityId": "2",
"message": "test message",
"userId": "11"
},
{
"someEntityId": "8",
"message": "test message two",
"userId": "16"
}
]
Как я уже сказал, у меня не может быть ApiResource
, поскольку это нарушит принципы REST исущность с этими полями не существует.Я использую эти данные для выполнения некоторой настраиваемой бизнес-логики, и этот JSON десериализуется в DTO
, а точнее в коллекцию DTOs
.
Обычный контроллер Symfony с маршрутизацией должен быть подходящим способом,по крайней мере, я думаю, но я не могу заставить этот маршрут отображаться в Swagger
даже с аннотациями для контроллера.
Я пробовал это:
/**
* @Route(
* methods={"POST"},
* name="api_post_notify_users",
* path="/api/users/notify_users",
* )
* @SWG\Post(
* path="/api/users/notify_users",
* summary="Summary",
* description="Description",
* produces={"application/json"},
* @SWG\Response(
* response=200,
* description="Success",
* )
* )
* @return Response
*/
public function __invoke()
{
$data = $this->get('request_stack')->getCurrentRequest()->getContent();
return new Response($data);
}
Не уверенчего мне не хватаетКроме того, есть ли способ проверить этот массив JSON по DTO
, чтобы быть уверенным, что все поля в JSON отправляются.
Любая помощь очень ценится!