[英]Symfony2 FOSRestBundle solely json
我開始使用FOSRestBundle構建Restful API。 我不想使代碼盡可能簡單明了。 我將僅將api用於json響應(無模板)。 現在我看到了“ @View”注解,它非常不錯,使用它時,return語句變得與返回“ $ data”對象一樣簡單。
//http://symfony.com/doc/current/bundles/FOSRestBundle/3-listener-support.html
/**
* @View()
*/
public function getUsersAction()
{
return $data;
}
但這需要我創建模板,並且我真的不需要也不需要。
如果我可以簡單地返回任何$ data(或至少數組)並將其自動格式化為json響應,那將是很好的。 如果可以的話,這可能是什么樣的配置?
“當view_response_listener設置為true而不是force且不使用@View()時,渲染將委派給SensioFrameworkExtraBundle。
您需要在SensioFrameworkExtraBundle中將注釋設置為false:
sensio_framework_extra:
view: { annotations: false }
和
fos_rest:
view:
view_response_listener: force
您可以查看以下示例https://github.com/liip/LiipHelloBundle/blob/master/Controller/ExtraController.php
是的,可以使用FOSRestBundle將響應作為JSON返回。 為此,您可以設置如下配置選項:
fos_rest:
param_fetcher_listener: true
body_listener: true
format_listener: true
view:
view_response_listener: 'force'
formats:
xml: true
json: true
templating_formats:
html: true
format_listener:
rules:
- { path: ^/, priorities: [ json, xml, html ], fallback_format: ~, prefer_extension: true }
請注意,以上代碼中的view_response_listener設置為“ force”。
在您的控制器中,您可以通過創建$ view對象,將數據作為JSON響應發送,如下所示
$view = View::create();
$view->setFormat('json');
$view->setStatusCode(200)->setData($data);
return $this->get('fos_rest.view_handler')->handle($view);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.