早上好
我是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;
}
预先感谢您的帮助
答案 0 :(得分:1)
我建议您这样做:
/**
* @Route("/video", method={"POST"}, name="video_create")
*/
public function createAction(Request $request) {...}
较少冗长,完全与Symfony兼容。这样,您的路由器将获得正确的路由。