cakePHP中的RESTful Web服务

时间:2012-04-18 21:03:03

标签: php web-services cakephp rest cakephp-1.3

我按照this website上的教程解释了如何使用cakePHP设置REST,但在我完成所有这些操作后,当我在浏览器中调用我的控制器时(例如我有一个PostsController,其中有默认的CRUD操作) ),我仍然得到html作为我的回应(不是xml)。看起来被调用的视图文件是app/views/posts/index.ctp中的视图文件,而不是我放在app/views/posts/xml/index.ctp中的文件。

有人可以告诉我,我在这里还缺少什么吗?

谢谢

3 个答案:

答案 0 :(得分:3)

您使用的是哪种版本的cakePHP?如果您使用的是2.x版本,那么解决方案非常简单。

  1. 确保在控制器中包含此行

    public $components = array('RequestHandler');
    
  2. 进入您的app / Config / routes.php并在require CAKE . 'Config' . DS . 'routes.php';行前添加以下行:

    Router::mapResources('examples');
    Router::parseExtensions('xml');
    

    其中示例基本上只是视图的名称。

  3. 请务必使用xml扩展名输入您的网址。

    url/controller.xml
    
  4. 这应该可以解决问题。包含RequestHandler组件,当“与Router :: parseExtensions()RequestHandler结合使用时,会自动将布局和视图文件切换到与所请求类型匹配的文件”

答案 1 :(得分:0)

您是否创建了xml布局?您可能只需要创建一个空白布局,并在视图中将布局设置为xml布局。

答案 2 :(得分:0)

尝试在控制器功能中添加这样的东西(甚至在beforeFiler中更好):

if(@($this->request->isXML() || $this->request->params['ext'] == 'xml')) {
    $this->RequestHandler->respondAs('xml');
}

还要确保在Config / routes.php中

Router::parseExtensions('xml');