基本上我正在开发一个带有蛋糕的API,我想在我的URL中加入一些版本控制,以便稍后更轻松地升级API。CakePHP API的路线
我不是在寻找的那一刻任何花哨路线,简单的路线
domain.com/api/1.9/:controller工作。
我很难让这个工作。目前简单的请求正常工作,但发送POST请求至domain.com/api/1.0/pictures/失败。
基本上我正在开发一个带有蛋糕的API,我想在我的URL中加入一些版本控制,以便稍后更轻松地升级API。CakePHP API的路线
我不是在寻找的那一刻任何花哨路线,简单的路线
domain.com/api/1.9/:controller工作。
我很难让这个工作。目前简单的请求正常工作,但发送POST请求至domain.com/api/1.0/pictures/失败。
弗兰克Mullenger有一个版本的CakePHP API,我已经找到了最好的解决方案。他发布了一个三部分系列,充分利用了Cake的路由和一些自定义API方法。
First part (the problem with un-versioned APIs)
这里有一个关于做你想要什么而不使用聪明的路由的想法,但你需要改变其余的调用URL一点。
代替
domain.com/api/1.0/pictures/$param1/$param2/$etc
尝试
domain.com/api/pictures/1.0/$param1/$param2/$etc
然后在控制器,
class Pictures extends controller {
....
function pictures($ver , $param1, $param2, $etc) {
switch($ver) {
case '1.3':
$this->setAction('pictures_1-3', $param1, $param2, $etc);
break;
case '1.2':
$this->setAction('pictures_1-2', $param1, $param2, $etc);
break;
case '1.1':
default:
$this->setAction('pictures_1-1', $param1, $param2, $etc);
break;
}
}
function pictures_1-3() {}
function pictures_1-2() {}
function pictures_1-1() {}
}
你如何定义你的路线? – Darren 2011-02-10 16:46:14
目前只有这些: Router :: connect('/ api/1.0 /:controller /:action',array()); #RESTful router aan! Router :: mapResources('ratings'); Router :: mapResources('pictures'); Router :: parseExtensions('xml','json'); – Ezra 2011-02-10 17:53:41