【问题标题】:Calling a REST API from an MVC Web Application从 MVC Web 应用程序调用 REST API
【发布时间】:2016-04-21 19:25:48
【问题描述】:

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

更多细节需要澄清。我确实可以完全控制我正在构建并且也在 PHP 中的 REST API。不过,我的团队构建的 iOS 和 Android 配套应用程序以及在专有设备上运行的其他一些应用程序也将利用该 API。

最初的计划是网络应用程序不打算利用 API,而是直接进入数据库以减少任何开销,但经过几次辩论后,我倾向于使用 API。

【问题讨论】:

  • 真正的问题是:我应该将它放在我的应用程序中还是单独的代码库中? (在我看来)
  • 我真的认为你应该使用“服务”(处理业务逻辑的类)。该服务应该处理对 api-s 的调用或查询数据库等等......

标签: php rest model-view-controller


【解决方案1】:

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

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

【讨论】:

  • 模型应该包含数据,而不是逻辑。 Web API 代码可以放入类库中,然后在整个应用程序的控制器中重用。
  • 我同意。这个问题太模糊了,我不确定她/他是否指的是模型的人口。我还假设他/她不能直接访问 API,或者它使用不同的语言等。不要将方法 populateModelById 放在控制器上,否则你将不得不重复它们这个地方。 理想情况下,它们不应该在模型或控制器中,但这可能被认为超出了这个问题的范围。
  • 我在我的问题中添加了更多细节。我确实可以控制 API。将其分解为自己的类库的问题在于应用程序将如何利用这些类。
  • 在那种情况下,我会选择 Karl 的回答。尤其是关于将 API 代码放入控制器使用的类库的部分。
【解决方案2】:

您应该从 Controller 调用 Web API。 Model 是数据从 Controller 传递到 View 的方式。 模型应该只有数据,没有业务逻辑。

当您从 Web API 获得响应时,应将数据放入 Model 并传递给 View

ModelViewController组成了MVC模式。控制器负责将数据放入模型中,然后传递给视图。视图接受模型并显示数据,正如它被告知的那样。模型或视图中都没有业务逻辑。

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

【讨论】:

  • “你应该从控制器调用 web API”你当然不应该使用服务(然后服务到 repo 或其他层中的其他类类型)。模型不会将数据传递给视图,控制器会。这是一个 web 应用程序而不是操作系统 GUI
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多