基本上我正在開發一個帶有蛋糕的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