【问题标题】:How to organize different versioned REST API controllers in Laravel 4?如何在 Laravel 4 中组织不同版本的 REST API 控制器?
【发布时间】:2013-05-06 05:52:39
【问题描述】:

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

【问题讨论】:

    标签: php laravel laravel-4


    【解决方案1】:

    我最终使用了 app/controllers 下的命名空间和目录:

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

    我不肯定这是最好的解决方案。但是,它允许以不相互干扰的方式对控制器进行版本控制。如果需要,您可能可以对模型进行类似的验证。

    【讨论】:

    • 当我使用这个方法时,我不得不使用完整路径引用命名空间之外的每个类(例如:\Input、\App)
    • 您还可以添加use App; 语句。这就是命名空间的工作原理。
    • @iah.vector - 版本有问题,只有控制器必须转到 v1 或模型、作业、请求和...也必须转到 vesrion 文件夹?
    • @TravisMiller 但是您如何确定访问者的版本?
    猜你喜欢
    • 2018-07-18
    • 2017-07-24
    • 2012-05-31
    • 2019-10-29
    • 2018-09-30
    • 2017-03-18
    • 1970-01-01
    • 2018-07-20
    • 2014-08-29
    相关资源
    最近更新 更多