2013-11-25 55 views
0

所以我想向我的API添加向後兼容的更改。PHP中的api版本控制系統的結構

我正在考慮做以下事情。

我所有的API端點被訪問如下:

/v2/account 
/v2/order 

有傳遞的API版本和版本調用相應的函數是子類V2具體的控制器,一個V2控制器。

所以2013_02_13版本,它的帳戶API調用

調用v2_2013_02_13::account你會如何實現API版本系統,支持向後不兼容的改變使用PHP MVC框架?

+0

嘿,那麼你是如何實現它的?我正在使用Symfony2並尋找解決方案。 –

回答

0

在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'); 
    } 

} 

我希望這有助於。