symfony-vuejs icon indicating copy to clipboard operation
symfony-vuejs copied to clipboard

application/json needs to be handled on the ApiPostController.php

Open asantossmw opened this issue 5 years ago • 0 comments

#I was having issues when submitted data to the backend, the controller was unable to get the message parameter. In order to process requests that have Content-Type: application/json header defined I added the following code on the ApiPostController.php file:

    /**
     * @Rest\Post("/api/post/create", name="createPost")
     * @param Request $request
     * @return JsonResponse
     * @IsGranted("ROLE_FOO")
     */
    public function createAction(Request $request): JsonResponse
    {
        // Added this in order to handle requests with Content-Type: application/json
        if (0 === strpos($request->headers->get('Content-Type'), 'application/json')) {
            $data = json_decode($request->getContent(), true);
            $request->request->replace(is_array($data) ? $data : array());
        }
        $message = $request->request->get('message');
        $postEntity = $this->postService->createPost($message);
        $data = $this->serializer->serialize($postEntity, 'json');
        return new JsonResponse($data, 200, [], true);
    }

I don't know if this is the best way to do this, I'm new to Symfony.

BTW, thanks for creating this tutorial / guide was very helpful :)

asantossmw avatar Mar 07 '19 00:03 asantossmw