簡體   English   中英

Symfony2 FOSRestBundle完全是json

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM