2012-06-11 38 views
0

我正在使用FOSRestBundle處理REST API,我希望能夠使用相同的URL來返回HTML和JSON,具體取決於請求Accept頭;即如果您直接從瀏覽器調用URL(Accept : text/html等),則從樹枝文件返回HTML,如果您發出AJAX請求(Accept : application/JSON等),則使用FOSRestBundle返回JSON。在Symfony路由中使用http請求頭返回不同的內容(html/json)

目前我可以通過在每個函數的頂部拋出一個小的if語句來檢查請求接受頭,如果它要求HTML它會返回twig文件,如果它要求JSON它會觸發該服務。

回答

0

在命令行模式下運行時,請求範圍不存在,我必須從每個構造函數中刪除請求,並且問題消失。

1

您應該在您的請求中發送「Accept」標頭。閱讀content negotiation (「Accept」 HTTP header) based routing in symfony2.0Format listener

+0

感謝您的迴應,使用接受標題沒有問題,但我仍然不能解決如何根據標題路由到不同的控制器。目前我使用一個控制器來確定類型,然後返回一個樹枝模板或點擊我的服務並返回JSON。它的工作原理,但它意味着在每個服務內重複相同的if語句,這不是很理想。 – greg