From 13cd182f3cd78f9beadc2097b4223d83667d5895 Mon Sep 17 00:00:00 2001 From: Baptiste Lemoine Date: Wed, 6 Nov 2019 11:23:43 +0100 Subject: [PATCH] :zap: start creation endpoint --- config/packages/fos_rest.yaml | 4 +--- config/packages/nelmio_api_doc.yaml | 16 ++++++++-------- src/Controller/DefaultController.php | 24 +++++++++++++++--------- src/Entity/Poll.php | 12 ++++++------ 4 files changed, 30 insertions(+), 26 deletions(-) diff --git a/config/packages/fos_rest.yaml b/config/packages/fos_rest.yaml index 8412a54..4326479 100644 --- a/config/packages/fos_rest.yaml +++ b/config/packages/fos_rest.yaml @@ -2,7 +2,6 @@ fos_rest: # param_fetcher_listener: true # allowed_methods_listener: true - # routing_loader: true # view: # view_response_listener: true # exception: @@ -10,8 +9,7 @@ fos_rest: # App\Exception\MyException: 403 # messages: # App\Exception\MyException: Forbidden area. - routing_loader: - default_format: json + routing_loader: true format_listener: rules: - { path: '^/', diff --git a/config/packages/nelmio_api_doc.yaml b/config/packages/nelmio_api_doc.yaml index 4e68479..2ae5f06 100644 --- a/config/packages/nelmio_api_doc.yaml +++ b/config/packages/nelmio_api_doc.yaml @@ -1,9 +1,9 @@ nelmio_api_doc: - documentation: - info: - title: My App - description: This is an awesome app! - version: 1.0.0 - areas: # to filter documented areas - path_patterns: - - ^/api(?!/doc$) # Accepts routes under /api except /api/doc + documentation: + info: + title: Poll Bliss + description: Sondages à la framadate par CipherBliss + version: 1.0.0 + areas: # to filter documented areas + path_patterns: + - ^/api(?!/doc$) # Accepts routes under /api except /api/doc diff --git a/src/Controller/DefaultController.php b/src/Controller/DefaultController.php index 51fc4e4..0e99f1e 100644 --- a/src/Controller/DefaultController.php +++ b/src/Controller/DefaultController.php @@ -7,11 +7,12 @@ use FOS\RestBundle\Controller\Annotations\Get; use FOS\RestBundle\Controller\Annotations\Post; use FOS\RestBundle\Controller\Annotations\Route; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; +use Symfony\Component\HttpFoundation\Request; /** * Class DefaultController * @package App\Controller - * @Route("/api",name="api_") + * @Route("/api/v1",name="api_") */ class DefaultController extends AbstractController { /** @@ -75,20 +76,25 @@ class DefaultController extends AbstractController { * name = "new_polls", * requirements = {"creator"="\w+"} * ) + * @param Request $request + * + * @return \Symfony\Component\HttpFoundation\JsonResponse */ - public function newPollAction( Poll $poll ) { - $em = $this->getDoctrine()->getManager(); + public function newPollAction( Request $request ) { + $data = $request->getContent(); + $poll = $this->get( 'jms_serializer' )->deserialize( $data, Poll::class, 'json' ); + + $em = $this->getDoctrine()->getManager(); $em->persist( $poll ); $em->flush(); -// return $poll; + return $this->json( [ + 'message' => 'you created a poll', + 'data' => $poll, + ], + 203 ); - return $this->json( $poll ); - -// return $this->json( [ -// 'message' => 'you created a poll', -// ] ); } /** diff --git a/src/Entity/Poll.php b/src/Entity/Poll.php index c79483c..16b98b5 100644 --- a/src/Entity/Poll.php +++ b/src/Entity/Poll.php @@ -16,18 +16,18 @@ class Poll { * @ORM\Id() * @ORM\GeneratedValue() * @ORM\Column(type="integer") - * @Serializer\Expose + * @Serializer\Expose() */ - private $id; + public $id; /** * @ORM\Column(type="string", length=255) - * @Serializer\Expose + * @Serializer\Expose() */ public $title; /** * @ORM\Column(type="string", length=255, nullable=true) - * @Serializer\Expose + * @Serializer\Expose() */ private $customUrl; @@ -39,13 +39,13 @@ class Poll { /** * @ORM\Column(type="string", length=1000) - * @Serializer\Expose + * @Serializer\Expose() */ private $description; /** * @ORM\Column(type="datetime") - * @Serializer\Expose + * @Serializer\Expose() */ private $creationDate;