configureRateLimiting(); $this->routes(function () { Route::prefix('api/v1') ->middleware('api.v1') ->namespace($this->getApiNamespace(1)) ->group(base_path('routes/api/v1.php')); // Route::prefix('api/v2') // ->middleware('api.v2') // ->namespace($this->getApiNamespace(2)) // ->group(base_path('routes/api/v2.php')); Route::middleware('web') ->namespace($this->namespace) ->group(base_path('routes/web.php')); }); } /** * Build Api namespace based on provided version * * @return string The Api namespace */ private function getApiNamespace($version) { return 'App\Api\v' . $version . '\Controllers'; } /** * Configure the rate limiters for the application. * * @return void */ protected function configureRateLimiting() { RateLimiter::for('api', function (Request $request) { return Limit::perMinute(60)->by($request->ip()); }); } }