函数顺序对于Symfony API的重要性

时间:2018-08-06 21:13:13

标签: php api symfony

早上好

我是Symfony的新手,我想开发一个API,但是用Postman测试时遇到了一个问题:

当我在http://127.0.0.1:8000/video路上进行GET时,邮递员执行“ createAction”功能而不是“ listAction”。但是他们的动词却大不相同...

你能解释为什么吗?

这是我的控制者:

 /**
 * @Route("/video", name="video_create")
 * @Method({"POST"})
 */
public function createAction(Request $request)
{
    $data = $request->getContent();
    $video = $this->get('jms_serializer')->deserialize($data, 'App\Entity\Video', 'json');

    $em = $this->getDoctrine()->getManager();
    $em->persist($video);
    $em->flush();

    return new Response('', Response::HTTP_CREATED);
}

/**
 * @Route("/video", name="video_list")
 * @Method({"GET"})
 */
public function listAction()
{
    $video = $this->getDoctrine()->getRepository('App\Entity\Video')->findAll();
    $data = $this->get('jms_serializer')->serialize($video, 'json');

    $response = new Response($data);
    $response->headers->set('Content-Type', 'application/json');

    return $response;
}

预先感谢您的帮助

1 个答案:

答案 0 :(得分:1)

我建议您这样做:

/**
 * @Route("/video", method={"POST"}, name="video_create")
 */
public function createAction(Request $request) {...}

较少冗长,完全与Symfony兼容。这样,您的路由器将获得正确的路由。