2013-05-03 30 views
1

我试图使用FOSRestBundle在symfony2中创建一个API驱动的项目。API驱动的symfony2项目

我有一个APIController与动作getDataAction().

这工作完全当我发送一些外部application.I请求得到一个JSON编码的数据如预期。

但是我会在同一个应用程序中需要这些数据(即同一个应用程序中的其他控制器)。

这是一个合适的方法吗?

  • 创建APIController的对象,然后调用它所需的操作。 或
  • 或者从另一个控制器发送CURL请求到APIControllergetDataAction()以获取数据。

回答

1

您可以通过使用route forwarding得到一个APIController数据。通过使用这个,你可以在你的控制器中使用任何动作。无需使用卷曲控制器对象或卷曲控制器对象。有些事情是这样的:

$details = $this->forward('acmeRestBundle:API:getData',array('_format'=>'json')); 

,将返回的结果集从action.May是这样的:

content":protected]=> 
    string(107181) "{}" 
    ["version":protected]=> 
    string(3) "1.0" 
    ["statusCode":protected]=> 
    int(200) 
    ["statusText":protected]=> 
    string(2) "OK" 
    ["charset":protected]=> 
    NULL 
+0

我知道的路由转发。但是我想知道哪个是正确的方法? 。并正在内部进行卷曲请求正确的方法 – 2013-05-03 09:44:02

+1

如果您需要诉诸于Curl在您的应用程序中调用方法,这意味着您的代码中存在严重的体系结构问题。您应该将您控制器中的任何业务逻辑外包给服务。控制器应该只处理http,而不是数据的管理方式。 – mpm 2013-05-04 11:01:38

+0

我不需要诉诸卷曲。我只是想知道这是否是正确的方法,从你的答案我认为它不是!那么我应该选择路由转发吗? – 2013-05-06 11:22:39