如何让我的Symfony2软件包使用在另一个软件包中创建的Web服务?

时间:2014-04-24 16:54:31

标签: angularjs symfony

我们正在构建一个Angular JS / Symfony2应用程序,并使用RESTful Web服务将数据提取到前端。

我们还创建了一个管理员(非Angular)来管理一些数据。我们认为重新使用REST api调用可能是最佳选择,而不是维护数据提取的第二组代码,因为它们与已知输入和预期输出具有契约性。

在我们的管理控制器中,是否有一种简单的方法可以在Symfony2中调用RESTful控制器并为输入提供不同的http请求类型(获取,发布,放置,删除等)并将响应拉回来?我们希望避免做一个卷曲请求。

在伪代码中:

$response = json_decode($request->call('/api/resource', 'post', array('id'=>5)));
// process $response
return $this->render('...view...', array(...));

提前致谢。

1 个答案:

答案 0 :(得分:4)

您可以使用Guzzle之类的HTTP客户端向您自己的 API 发出调用。
但是,我建议您在创建新的不必要请求时执行此操作。我建议您将所有业务逻辑控制器移至单独的服务。使这些服务返回简单Objects而不是JSON,并使用Bundle中的控制器仅将转换这些Objects转换为响应。这样您就可以重新使用 AdminBundle中的服务。