Как организовать различные версии REST API-контроллеров в Laravel 4?

Я знаю, что есть способ создать версии URL для REST API с маршрутами, но что лучше всего организовать контроллеры и файлы контроллеров? Я хочу, чтобы иметь возможность создавать новые версии API, и по-прежнему держать старые в течение как минимум времени.

Я закончил использование пространств имен и каталогов в приложении / контроллерах:

/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\UserController@index'); Route::get('user/{id}', 'Api\v1\UserController@show'); }); Route::group(['prefix' => 'api/v2'], function () { Route::get('user', 'Api\v2\UserController@index'); Route::get('user/{id}', 'Api\v2\UserController@show'); }); 

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