2013-05-11 21 views
20

ルート付きのREST API用のバージョニングされたURLを作成する方法があることは知っていますが、コントローラとコントローラファイルを整理する最も良い方法は何ですか?私はAPIの新しいバージョンを作成し、古いものを少なくともある程度は稼働させたいと考えています。Laravel 4で異なるバージョンのREST APIコントローラを構成するにはどうすればよいですか?

答えて

37

私はアプリ/コントローラの下の名前空間とディレクトリを使用して終了:

/app 
    /controllers 
    /Api 
     /v1 
     /UserController.php 
     /v2 
     /UserController.php 

そしてUserController.phpファイルで、私はそれに応じて名前空間を設定します。

namespace Api\v1; 

または

namespace Api\v2; 

をそれから私のルートでは、私はこのような何かをした:

Route::group(['prefix' => 'api/v1'], function() { 
    Route::get('user',  'Api\v1\[email protected]'); 
    Route::get('user/{id}', 'Api\v1\[email protected]'); 
}); 

Route::group(['prefix' => 'api/v2'], function() { 
    Route::get('user',  'Api\v2\[email protected]'); 
    Route::get('user/{id}', 'Api\v2\[email protected]'); 
}); 

私はこれが最良の解決策ではないと思います。しかし、それは互いに干渉しないようにコントローラのバージョン管理を可能にしています。必要に応じて、モデルと同様の検証を行うことができます。

+0

このメソッドを使用したとき、完全なパス(例:\ Input、\ App)を使用して名前空間外のすべてのクラスを参照する必要がありました –

+3

'use App;'ステートメントを追加することもできます。それが名前空間の仕組みです。 –

+1

@ iah.vector - バージョンに問題があります。コントローラーはv1またはモデル、ジョブ、要求に移動し、vesrionフォルダーに移動する必要がありますか? –

関連する問題