Php 从MVC Web应用程序调用REST API

Php 从MVC Web应用程序调用REST API,php,rest,model-view-controller,Php,Rest,Model View Controller,我有一个需要调用RESTAPI的MVC PHP web应用程序。我不清楚应该从控制器还是从模型调用API?从各种资源来看,我得到的信息不一。我假设它应该来自模型,因为我所做的只是处理数据并将其传递给控制器,对吗 还有一些细节需要澄清。我对RESTAPI有完全的控制权,我正在构建这个API,它也是用PHP编写的。不过,我的团队构建的iOS和Android配套应用程序以及一些在专有设备上运行的其他应用程序也将利用该API 最初的计划是,web应用程序不会利用API,而是直接转到DB以减少任何开销,但

我有一个需要调用RESTAPI的MVC PHP web应用程序。我不清楚应该从控制器还是从模型调用API?从各种资源来看,我得到的信息不一。我假设它应该来自模型,因为我所做的只是处理数据并将其传递给控制器,对吗

还有一些细节需要澄清。我对RESTAPI有完全的控制权,我正在构建这个API,它也是用PHP编写的。不过,我的团队构建的iOS和Android配套应用程序以及一些在专有设备上运行的其他应用程序也将利用该API


最初的计划是,web应用程序不会利用API,而是直接转到DB以减少任何开销,但经过几次辩论后,我倾向于使用API。

您应该从控制器调用web API模型是数据从控制器传递到视图的方式。模型应该只有数据,没有业务逻辑

当您从web API获得响应时,应将数据放入模型,并传递到视图

模型视图控制器构成了MVC模式。控制器负责将数据放入模型,并将其传递给视图。该视图获取模型并按指示显示数据。模型或视图中都没有业务逻辑


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

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


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

真正的问题是:我应该在我的应用程序中使用它还是在单独的代码库中使用它?(在我看来)我真的认为应该使用“服务”(处理业务逻辑的类)。该服务应该处理对api-s的调用或查询数据库等…模型应该包含数据,而不是逻辑。Web API代码可以放入类库,然后在整个应用程序的控制器中重用。我同意。这个问题非常模糊,我不确定他/她是否指的是模型的总体。我还假设他/她没有直接访问API的权限,或者API使用不同的语言,等等。不要将方法
populateModelById
放在控制器上,否则你必须到处重复它们。理想情况下,它们不应该在模型或控制器中,但这可能被认为超出了这个问题的范围。我可以控制API。将其打入自己的类库的问题在于应用程序将如何利用这些类。如果是这样,我同意Karl的答案。特别是关于将API代码放入控制器使用的类库的部分。