前言
在实际开发中,我们都知道一个问题,那就是本版更新问题,那么在laravel中如何设置版本呢?请看下面!
根据官网去安装好laravel,我的是laravel7.14.1。然后在app/Providers/RouteServiceProvider服务中加入以下代码,记得在map方法中调用
/**
* 路由加载 多版本
*/
protected function mapApiRoutes(){
// 获取路由文件夹下的所有目录和文件
foreach (scandir(base_path('routes')) as $dir){
//匹配所有以v开头的目录作为版本号
if(Str::startsWith($dir,'v')){
Route::prefix('api')
->middleware('api')
//设置命名空间
->namespace($this->namespace)
->group(base_path('routes/'.$dir.'/api.php'));
}
}
}
路由目录结构如下,目前在v1文件下,只能是api.php,或许大家可以优化。
路由api.php代码如下
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/
//Route::middleware('auth:api')->get('/user', function (Request $request) {
// return $request->user();
//});
Route::prefix('auth')->group(function($router) {
$router->post('login', 'AuthController@login');
$router->post('logout', 'AuthController@logout');
$router->post('test', 'AuthController@test');
});
Route::group(['namespace'=>'Api'],function () {//做版本控制
Route::group(['prefix'=>'v1','namespace'=>'V1'],function () {//第一版本
Route::middleware('refreshtoken')->group(function($router) {
//访问地址 api/v1/profile
$router->get('/profile','UserController@profile')->name('api.v1.profile');
});
});
});
我的控制器目录如下:
如果大家觉得我的控制器目录不够美观,可以将Controller.php和Authcontroller.php进行转移到V1目录下面,不过需要注意的是命名空间记得修改一下。
现在大家可以愉快的进行多版本开发了!!!