Php Lumen/Dingo API动态版本控制
我正在为我的项目使用Lumen,目前我的API版本是通过前缀和使用特定的相应控制器,如:Php Lumen/Dingo API动态版本控制,php,rest,routes,lumen,dingo-api,Php,Rest,Routes,Lumen,Dingo Api,我正在为我的项目使用Lumen,目前我的API版本是通过前缀和使用特定的相应控制器,如: $api->get('/v1/users', 'App\Api\V1\Controllers\UserController@show'); $api->get('/v2/users', 'App\Api\V2\Controllers\UserController@show'); 我想改变这一点,这样我就可以从用户那里获取一个参数,并使用一个基于该参数的控制器 This Route: $api-
$api->get('/v1/users', 'App\Api\V1\Controllers\UserController@show');
$api->get('/v2/users', 'App\Api\V2\Controllers\UserController@show');
我想改变这一点,这样我就可以从用户那里获取一个参数,并使用一个基于该参数的控制器
This Route:
$api->get('/v{api_version}/users'...
Should use this controller:
'App\Api\V{api_version}\Controllers\UserController@show'
我目前正在使用野狗沿侧腔,是否有任何方法可以使用流明或野狗?是的,您可以。但它比你的例子要复杂一点,但它仍然是一行。只需定义一个闭包并在其中调用控制器,而不是直接传递FQCN控制器名称 路由/web.php
$app->get("api/v{version}/users", function ($version) use ($app) {
return $app->make("App\Api\V{$version}\Controllers\UserController")->show();
});
如果其他人(和我一样)对如何在laravel安装中实现同样的功能感兴趣:只需在控制器解析后使用方法
Controller::callAction()
Route::get("api/v{version}/test", function ($version) {
return app()->make('App\Api\V{$version}\Controllers\UserController')->callAction("show", [/* arguments */]);
});
谢谢你的回复!这真的很有帮助,很有魅力。但是,我想知道make()到底做什么?