2012-01-27 60 views
2

我目前正在Symfony2應用程序中編寫REST服務。這是(大約)怎麼我的控制器的一個樣子:違反Symfony2路由要求不會導致正確內容類型的響應

/** 
* @Route("/account", defaults={"_format" = "json"}) 
*/ 
class AccountController extends APIController 
{ 
    /** 
    * @Route("/") 
    * @Method("get") 
    */ 
    public function listAction() 
    { 
     // process something here and return JSON-encoded response 
    } 
} 

這工作都很好 - 即如果有問題,彈出,我扔了HTTPException,從Symfony2中的TwigBundle正確error.json.twig使用,並呈現HTTP錯誤作爲JSON。

但是,這是違反路由要求,其中@Method("get")是一個不正確的。如果我舉例POSTPUT針對上述URL,我仍然得到正確的HTTP狀態代碼,但呈現錯誤的內容類型(text/html而不是application/json)。

我非常感興趣,讓完整的API返回JSON響應,而不是其他任何東西 - 問題是:我該如何實現?我是否必須全部省略路線要求並親自檢查要求(然後最終拋出我自己的HTTPException)?

回答

0

您可能應該將它作爲錯誤/願望存檔在github page。 (我試圖找到負責任的PHP文件,但是HttpKernel組件並不完全是因爲心裏暗淡。)

+0

從我在生成的代碼中看到的正確的HTTPException被解僱了,但上帝(或Fabien)知道格式處理的確切位置...... – 2012-01-28 23:26:17

+0

在https://github.com上發佈了該錯誤/ symfony中/ symfony中/問題/ 3215。 – 2012-01-29 22:59:31

0

你總是可以嘗試在註釋上使用yml路由。對我來說工作得很好。抱歉,無法給出更有幫助的迴應。

+0

我做了所有帶註釋的路由,所以保持這種方式會很酷。 – 2012-02-29 00:06:33