所以我想向我的API添加向后的内部兼容更改。
我正在考虑做以下事情。
我的所有api端点的访问方式如下:
/v2/account
/v2/order
拥有一个传递了API版本的v2控制器,并在作为v2子类的版本特定控制器中调用适当的函数。
因此对于版本2013_02_13,它调用v2_2013_02_13::account
进行帐户api调用
您将如何实现API版本控制系统,以使用PHP-mvc框架支持向后不兼容的更改?
在Kohana中,只需使用一个目录即可。所以你的控制器会这样放置。
application/classes/Controllers/V2_2013_02_13/Enpoint1Controller
然后你可以为你的不同版本设置路线。
Route::set('v2', 'v2/<controller>(/<action>)')
->defaults(array(
'directory' => 'V2_2013_02_13',
'controller' => 'welcome',
'action' => 'index',
));
这将是最简单的方法,然而,如果你真的想有一些动态的方式来调用特定版本的控制器,我会看看Kohana的HMVC。
我的猜测是,您需要为每个版本提供一个入口控制器,并对正确的控制器进行内部请求。
也许是这样的。
路线:
Route::set('versioned', '<version>/<someAction>')
->defaults(array(
'version' => 'v2',
'someAction' => 'user'
'controller' => 'welcome',
'action' => 'index',
));
控制器:
class Controller_Welcome extends Controller {
public function action_index()
{
// Your Version and the action
$this->request->param('version');
$this->request->param('someAction');
// Do an internal request to the right controller (the v2/user is an example)
$internalRequest = Request::factory('v2/user');
}
}
我希望这能有所帮助。