POST请求被视为GET

时间:2016-04-12 07:33:30

标签: symfony fosrestbundle

我的问题是我的控制器像GET一样处理POST方法。当我尝试将参数传递给post方法时,它会给我GET结果,因为它们具有相同的语法。

我的POST功能如下:

/**
 * @ApiDoc(description="Uploads photo with tags.")
 *
 * @Rest\FileParam(name="image", image=true, description="Image to upload.")
 * @Rest\RequestParam(name="tags", requirements=".+", nullable=true, map=true, description="Tags that associates photo.")
 * @Rest\View()
 */
public function postPhotoAction(ParamFetcher $paramFetcher, array $tags)
{
    $em = $this->getDoctrine()->getManager();

    $photo = new Photo();
    $form = $this->createForm(new PhotoType, $photo);

    if ($tags) {
        $tags = $em->getRepository('TestTaskTagsBundle:Tag')->findOrCreateByTitles($tags);
    }

    $form->submit($paramFetcher->all());

    if (!$form->isValid()) {
        return $form->getErrors();
    }

    foreach ($tags as $tag) {
        $photo->addTag($tag);
    }

    $em->persist($photo);
    $em->flush();

    return array('photo' => $photo);
}

当我尝试使用此网址发布图片时:http://localhost/test/web/app_dev.php/photos?tags[]=bebe&_format=json&image=E:\photos\n3ass.jpg,它会向我显示GET结果。 如何解决?

1 个答案:

答案 0 :(得分:2)

 http://localhost/test/web/app_dev.php/photos?tags[]=bebe&_format=json&image=E:\photos\n3ass.jpg

这是GET请求

阅读文档:http://www.w3schools.com/tags/ref_httpmethods.asp

如果要模拟POST请求,可以使用一些工具。在POST请求中,参数在正文中而不在URL中。

如果您不在localhost中,此工具可以为您提供帮助:https://www.hurl.it

在localhost中,我邀请您使用 WebTestCase 来模拟本地POST请求http://symfony.com/doc/current/book/testing.html#working-with-the-test-client