2013-11-25 6 views
0

Итак, я хочу добавить обратно обратно совместимые изменения в свой API.Структура системы управления версиями api в PHP

Я думал о следующем.

Все моего API конечных точки доступны следующим образом:

/v2/account 
/v2/order 

Имея контроллер v2, который передается версией API и вызывает соответствующую функцию в версии конкретных контроллеров, которые подкласс v2.

так и для версии 2013_02_13 он вызывает v2_2013_02_13::account для учетной записи апите вызов

Как бы реализовать систему управления версий API для поддержки отсталых несовместимых изменений с помощью PHP MVC Framework?

+0

Эй, как вы его реализовали? Я использую Symfony2 и ищу решение. –

ответ

0

В Кохане вы можете просто использовать для этого каталог. Таким образом, ваши контроллеры будут размещены так.

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', 
)); 

Это будет самый простой подход, однако, если вы действительно хотите иметь некоторый динамический способ вызвать определенные версии контроллеров, чем я хотел бы посмотреть на 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'); 
    } 

} 

Я надеюсь, что это помогает.

Смежные вопросы