【问题标题】:Laravel routes with unlimited parameters for RESTful API具有无限参数的 RESTful API 的 Laravel 路由
【发布时间】:2016-08-27 03:41:53
【问题描述】:

我正在使用 Laravel 5.1 构建一个 RESTful API。 默认路由是api。用户可以使用任意数量的参数创建一个 url 服务,比如.../api/p1/p2/.../pn

如何使单个路由指向单个控制器,以便在单个控制器中处理服务?

注意:首先应用程序只需要通过比较url与数据库中存储的服务来知道服务是否存在。至于服务本身,后面可以查询到数据库中。

我读到我们可以在 Laravel 4 中使用*,那么 Laravel 5.1 呢?

我试过了:

Route::resource('/api/*', 'APIServiceController'); 但它不适用于无限参数

或者是否可以这样做

Route::group(['prefix' => 'api'], function () { //what should I put in the closure, how can I redirect it to a single controller });

【问题讨论】:

    标签: php api rest laravel-5.1


    【解决方案1】:

    你可以试试这个技巧

    Route::get('{pageLink}/{otherParams?}', 'IndexController@get')->where('otherParams', '(.*)');
    

    你应该把它放在 routes.php 文件的末尾,因为它就像一个'catch all' 路由。

    class IndexController extends BaseController {
    
        public function get($pageLink, $otherParams = null)
        {
            if($otherParams) 
            {
                $otherParams = explode('/', $otherParams);
            }
        }
    
    }
    

    【讨论】:

    • 谢谢。它按我想要的方式工作。处理我从 get 更改为 any 的任何方法。
    【解决方案2】:

    写下你的路线:-

    Route::group(['prefix' => 'api'], function () {
        // this route will basically catch everything that starts with api/routeName 
        Route::get('routeName/{params?}', function($params= null){
            return $params;
        })->where('params', '(.*)');
    });
    

    重定向到控制器,

    Route::group(['prefix' => 'api'], function () {
        Route::get('routeName/{params?}', 'YourController@action')->where('params', '(.*)');
    });
    

    如果你想让 routeName 动态化,那么只需将它写在花括号中,如下所示:-

    Route::get('{routeName}/{params?}', 'YourController@action')->where('params', '(.*)');
    

    希望对你有帮助:-)

    【讨论】:

    • 感谢您的回答。 'routeName' 也是动态创建的,所以我不想通过在路由中硬编码来一一定义路由,因为它可能很多。
    • 测试你的解决方案后,我将routeName更改为变量{slug},这样我就不用一一定义路由名称了
    • 是的。如果你将 routeName 定义为 {slug} 那么它的名字就会变成动态的。
    • 在最佳实践中,您应该在制作 api 时修复您的 routeName。因此,在较大的应用程序中,您可以轻松对其进行调试。
    猜你喜欢
    • 2016-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-10
    • 2016-10-12
    • 2014-03-08
    • 2014-02-04
    相关资源
    最近更新 更多