从应用程序和REST中检索相同的数据

时间:2012-07-13 08:47:54

标签: zend-framework rest

使用Zend Framework,如果我想从我的应用程序和通过REST接收相同的数据,这将由同一个动作控制器处理,即

articlesController extends Zend_Controller_Action
{
    listAction()
    {
        // Service layer get data

        // REST request return results in JSON

        // Normal request return view
    }
}

或者这应该在单独的控制器中?

articlesController extends Zend_Controller_Action
{
    listAction()
    {
        // Service layer get data
        // Returns view
    }
}

articlesController extends Zend_Rest_Controller
{
    getAction()
    {
        // Service layer get data
        // Returns view
    }
}

希望有意义

谢谢你们

1 个答案:

答案 0 :(得分:0)

在默认的MVC Zend Framework设置中,Controller和Action名称链接到路径。路由器检查路径,然后调度到适当的控制器和操作。

考虑到这一点,你如何设置它并不重要。 只取决于您希望如何构建路径

如果路径中的某些信息包含其他参数,则可以在一个操作中合并所有内容。您的第一个参数可能是REST请求的“api”,或者如果您的其他参数位于URI路径中,则您有常规请求,但如果参数位于GET数组中,则您有API REST请求。这对你的第一个例子都有用,我猜你已经这么想了。

对我来说,拥有API路径更合适。有了它,您将拥有一个API控制器和相应的操作。在第二个示例中,这意味着您的API控制器看起来更像是

apiController extends Zend_Rest_Controller {
    articlesAction() {
         // your REST data here
    }
}

// URI path: /api/articles

请注意,您不能拥有两个名称相同的控制器。