如何做到
只設(shè)置一條路由 /api/* 所有生效
例如 /api/user/query
能不能把a(bǔ)pi/v1,api/v2弄成自動(dòng)匹配
根據(jù)https://github.com/walkor/webman/issues/54作者的答復(fù)把v1改成verion,在加點(diǎn)判斷版本,類存不存在啥的,自由發(fā)揮,如下:
Route::any('/api/{verion}/{controller}/{action}', function($request, $verion, $controller, $action){
$class_name = "app\api\{$verion}\controller\" . $controller;
var_export($verion);
$controller = new $class_name;
return call_user_func([$controller, $action], $request);
});
Route::group('/api',function () {
Route::group("/{verion}", function () {
Route::any('/{controller}/{action}', function ($request, $verion, $controller, $action) {
$class_name = "app\api\{$verion}\controller\" . $controller;
$controller = new $class_name;
return call_user_func([$controller, $action], $request);
});
});
});
Route::group('/api/{verion}', function () {
Route::group("/{controller}", function () {
Route::any("/{action}", function (Request $request, $verion, $controller, $action) {
$class_name = 'app\\api\\controller\\' . $verion . '\\' . $controller;
if(!is_dir( 'app\\api\\controller\\' . $verion)){
return json(['code'=>500,'msg'=>$verion.'目錄不存在!']);
}
if(!class_exists($class_name)){
return json(['code'=>500,'msg'=>$verion."目錄下的控制器: {$controller}不存在!"]);
}
if (!method_exists($class_name, $action)) {
return json(['code'=>500,'msg'=>$verion."目錄下的控制器: {$controller}里面的方法: {$action}不存在"]);
}
$controller = new $class_name;
$request->controller = $class_name;
return call_user_func([$controller, $action], $request);
});
});
});
本地目錄結(jié)構(gòu)