如何在Laravel 4中组织不同版本的REST API控制器?

She*_*zod 20 php laravel laravel-4

我知道有一种方法可以为带有路由的REST API创建版本化URL,但是组织控制器和控制器文件的最佳方法是什么?我希望能够创建新版本的API,并且仍然保持旧版本的API运行至少一段时间.

小智 37

我最终在app/controllers下使用名称空间和目录:

/app
  /controllers
    /Api
      /v1
        /UserController.php
      /v2
        /UserController.php
Run Code Online (Sandbox Code Playgroud)

在UserController.php文件中,我相应地设置了命名空间:

namespace Api\v1;
Run Code Online (Sandbox Code Playgroud)

要么

namespace Api\v2;
Run Code Online (Sandbox Code Playgroud)

然后在我的路线中我做了这样的事情:

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');
});
Run Code Online (Sandbox Code Playgroud)

我不肯定这是最好的解决方案.但是,它允许控制器的版本化,使它们不会相互干扰.如果需要,您可以做一些与模型类似的验证.

  • 您还可以添加`use App;`语句.这就是命名空间的工作原理. (3认同)