我是RESTful Web服务的新手,并且仍在研究与MVC模式相结合的设计/架构方面。我正在使用Codeigniter框架来实现MVC。
我有一个非常简单的问题。我正在使用表单数据来更新我的数据库中的表。我写了一个能做到这一点的api:
http://www.example.com/api/resource/tablename/?param1=info1 ...
典型的api。我想知道的是,在MVC模式中,我应该在我的VIEW中使用cURL来POST数据并使用表单数据更新我的表,还是应该仍然将POST数据发送到我的控制器并从控制器进行api调用更新表格。
对我而言,此时似乎是随意的,因为两者都会完成同样的事情,但标准做法是什么?可以直接从VIEW与您的api通信来更新您的数据库表吗?
答案 0 :(得分:1)
如果不了解您的预期应用程序,我可以这样说:
通常,如果可能,您希望尝试将任何处理逻辑(PHP)保留在视图之外。控制器的重点是处理模型中的事务操作,然后将其传递给视图。因此,如果您使用API从要在视图中使用/操作的服务收集某些数据,那么该逻辑位置将位于控制器中。
MVC模式并不是X的强硬法则在Y中,Y在Y中。这是一种模式,可以轻松扩展和抽象数据收集,处理逻辑和可视化布局。
从技术上讲,根据应用程序以及您计划如何使用它,您可以为API创建一个模型,以便它可以在多个控制器中使用,而无需重新编写它。
答案 1 :(得分:1)
从VIEW直接与你联系是否可以 更新你的db表??
是的,实际上这就是你在这种情况下应该做的事情!将您的数据直接发送到API。如果任何数据验证失败,或者执行需要对POSTed数据执行的任何操作,您的API应执行所有数据验证并返回错误消息(采用标准格式,如JSON,XML等)。这样做的一大好处是,您的API可以被任何调用者使用,并且本身就是一个完整的生态系统。