Laravel动态URL路由


Laravel dynamic URL routing

我对Laravel相对陌生,并自学了一些新技术和平台。我喜欢Laravel的路由功能,只是想知道是否有一种方法可以动态地路由到路由组中的资源。

Route::group(['domain' => 'api.domain.dev', 'prefix' => '/{version}/{resource}'],
    function ($ignore, $version = 'v1', $resource = 'test') {
        // Check if resource exists, if not 404
        $path = '../app/Http/Controllers/api/'.$version.'/'.$resource.'Controller.php';
        if (!File::exists($path)) {
            abort(404);
        }
        // Add magic method __get to handle errors and use interface to ensure all methods are available
        Route::get('', "api''{$version}''{$resource}Controller@index");
        Route::put('', "api''{$version}''{$resource}Controller@put");
        Route::post('', "api''{$version}''{$resource}Controller@post");
        Route::delete('', "api''{$version}''{$resource}Controller@delete");
    }
);

从本质上讲,我试图实现的是将所有API子域路由到一个组中。然后使用版本号动态路由到一组控制器,这些控制器将按文件夹名称进行拆分。

示例URL

http://api.domain.com/v1/test

要在Laravel中创建具有版本控制、名称空间和前缀的动态URL路由,可以在routes/api.php文件中使用group方法。

Route::middleware(APIversion::class)->prefix('{version}/{device}')->group(function () {
    Route::group(['namespace' => 'Api'''.request()->route('version').''''], function () {
        Route::controller(AuthController::class)->group(function(){
            Route::post('/login',['as' => 'login', 'uses' => 'login']);
        });
    });
});

这应该行得通。