2016-04-12 111 views
-2

我的問題是,我的控制器像GET一樣處理POST方法。當我嘗試將參數傳遞給post方法時,它給了我GET結果,因爲它們具有相同的語法。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,它讓我得到結果。 如何解決這個問題?

回答

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。

這個工具可以幫助你,如果你是不是在本地主機:https://www.hurl.it

在本地主機,我邀請您使用WebTestCase模擬本地POST請求http://symfony.com/doc/current/book/testing.html#working-with-the-test-client

+0

所以沒有辦法添加的參數在網址發佈請求? – Nada

+0

沒有 http://stackoverflow.com/questions/14551194/how-are-parameters-sent-in-an-http-post-request –

+0

好吧,我會盡量使用hurl.it – Nada