【问题标题】:Multi level REST API on cake phpcakephp 中的多级 REST API
【发布时间】:2012-01-22 11:35:34
【问题描述】:

我是 cakephp 新手。我正在使用 2.0.5 版本,根据它看起来像一大堆点上的轨道很容易完成。

我目前正在使用它为游戏构建 REST api。构建 REST 控制器很容易,但找不到获取嵌套资源的方法。

我的意思是在 Rails 中很容易得到这样的东西:controller1/id/controller2/id。

我很难在 cakephp 中找到一种方法来做到这一点。 mapresources 方法似乎不支持多级 rest api。我错了吗?

我如何在 cakephp 2 中做一个多级的 rest API?

【问题讨论】:

  • 你不定义一条新路线吗?

标签: cakephp rest multi-level


【解决方案1】:

所以,我成功构建了自己的生成器。

根据你提供一个数组的事实(“parent_controller”=>“child_controller”)。

这样你就可以为超级英雄生成 => 超能力

superheros/1/superpowers/(根据您的路线,这里有或没有 id。

args 映射到方法 args 所以函数 index($superhero_id)

function generateNestedResources($array)
    {

        foreach($array as $key=>$value)
        {
            //Index -GET /
             Router::connect('/'.$key.'/:'.$key.'_id/'.$value,
                array('controller' => $value,'action' => 'index','method' => 'GET'),
                array( $key.'_id' => '[0-9]+','pass' => array($key.'_id')));
            // View -GET /id
            Router::connect('/'.$key.'/:'.$key.'_id/'.$value.'/:id',
                array('controller' => $value,'action' => 'view','method' => 'GET'),
                array('id' => '[0-9]+', $key.'_id' => '[0-9]+','pass' => array($key.'_id','id')));

            //add -POST/
             Router::connect('/'.$key.'/:'.$key.'_id/'.$value,
                array('controller' => $value,'action' => 'add','method' => 'POST'),
                array( $key.'_id' => '[0-9]+','pass' => array($key.'_id')));
            //edit -PUT/ID
             Router::connect('/'.$key.'/:'.$key.'_id/'.$value.'/:id',
                array('controller' => $value,'action' => 'edit','method' => 'PUT'),
                array('id' => '[0-9]+', $key.'_id' => '[0-9]+','pass' => array($key.'_id','id')));

            //delete -DELEte /ID
             Router::connect('/'.$key.'/:'.$key.'_id/'.$value.'/:id',
                array('controller' => $value,'action' => 'delete','method' => 'DELETE'),
                array('id' => '[0-9]+', $key.'_id' => '[0-9]+','pass' => array($key.'_id','id')));

        }

    }

【讨论】:

    猜你喜欢
    • 2013-01-18
    • 2012-07-03
    • 2016-11-13
    • 2016-04-10
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多