Laravel路由具有RESTful API的无限参数

I am building a RESTful API using Laravel 5.1. The default route would be api. The user is allowed to create a url service using as many as parameters as she wants let's say .../api/p1/p2/.../pn.

How do I make a single route to point to a single Controller, so the service will be handled in a single controller?

Note : At first the application just needs to know whether the service exists or not by comparing the url with stored service in the database. As for the service itself, it can be queried into the database later.

I read that we can use * in Laravel 4, how about Laravel 5.1 ?

I have tried :

Route::resource('/api/*', 'APIServiceController'); but it does not work for unlimited parameters

or is it possible to do it like this

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

Write your route as below:-

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', '(.*)');
});

Redirect to controller,

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

If you want to make routeName dynamic then just write it in curly bracket as below:-

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

Hope it will help you :-)

You can try this trick

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

You should put it on the end of routes.php file as it is like a 'catch all' route.

class IndexController extends BaseController {

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

}