2016-04-21 71 views
2

我有一个需要调用REST API的MVC PHP Web应用程序。我不清楚应该从我的控制器还是从模型调用API?看着各种资源,我得到了混合信息。我认为它应该来自模型,因为我所做的就是处理数据并将其传递给控制器​​正确?从MVC Web应用程序调用REST API

一些更详细的说明。我确实完全控制了正在构建过程中的REST API,并且也使用了PHP。然而,API也会被我的团队构建的iOS和Android伴侣应用程序以及运行在专有设备上的一些其他应用程序所利用。

最初的计划是,网络应用程序不会利用API,只是直接去数据库,以削减任何开销,但后来几次辩论,我倾向于使用API​​。

+1

真正的问题是:我应该在我的应用程序还是单独的代码库? (在我看来) –

+2

我真的认为你应该使用'服务'(处理业务逻辑的类)。该服务应该处理对api-s的调用或查询数据库,等等...... –

回答

0

您应该从控制器调用Web API。 型号是数据如何从控制器传递到查看型号应该只有数据和没有业务逻辑。

当你从Web API的响应,该数据应被放入模式,并传递给查看

模式,则查看控制器弥补MVC模式。 Controller负责将数据放入Model中,并传递给View。视图采用模型并显示数据,正如它所告知的那样。模型或视图中没有业务逻辑。

理想情况下,您可以将API代码放入控制器使用的类库中。这使您可以将业务逻辑从网站中分离出来并分解成单独的组件。

1

如果REST资源是模型的表示,或者如果您打算跨多个控制器需要此功能,我会从模型调用。

来自控制器的调用,如果它不是100%特定于模型表示,或者只对您使用的控制器/视图很重要。

+0

模型应该包含数据,而不是逻辑。 Web API代码可以放入类库中,然后在整个应用程序的控制器中重用。 –

+1

我同意。这个问题太模糊了,我不确定他/她是否指的是模型的人口。我还假设他/她没有直接访问该API,或者它是用不同的语言编写的,等等。不要将方法'populateModelById'放在控制器上,否则你必须全部重复它们这个地方。 *理想情况下,他们不应该在模型或控制器*中,但可以考虑超出这个问题的范围。 –

+0

我在我的问题中增加了一些细节。我确实可以控制API。将它分解成它自己的类库的担忧是应用程序如何利用这些类。 – Runicode

相关问题