2013-11-25 1 views
0

그래서 내 API에 대한 이전의 호환되지 않는 변경 사항을 추가하고 싶습니다.PHP의 API 버전 체계 구성

나는 다음과 같이 생각했다. 다음과 같이

내 API 엔드 포인트의 모든

은 액세스 :

/v2/account 
/v2/order 

이 v2로 하위 클래스 특정 컨트롤러를하는 API 버전을 통과 버전에서 해당 함수를 호출하는 V2 컨트롤러를 가졌어요.

그래서 버전 2013_02_13 것이 계정 API 호출

에 대한 v2_2013_02_13::account 호출하는 방법 당신은 PHP MVC 프레임 워크를 사용하여 이전 버전과 호환되지 않는 변경 사항을 지원하는 API 버전 관리 시스템을 구현하는 것이?

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

} 

나는이 도움이되기를 바랍니다.