Пользовательский контроллер Api Platform с собственным телом JSON - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь создать настраиваемое действие / контроллер / операцию в 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 отправляются.

Любая помощь очень ценится!

...