美文网首页
api版本控制的几种方式!

api版本控制的几种方式!

作者: DragonersLi | 来源:发表于2020-07-29 14:08 被阅读0次
    一、通过url后面跟参数版本,例如:xxx.com?version=v1,兼容项目,一般不建议这么使用。
    二、通过配置子域名或模块方式,例如:v1.xxx.comv2.xxx.com两个子域名来分别对应项目的两个模块,或者xxx.com/v1xxx.com/v2
    三、对于API应用,单模块+多级控制器实现
    image.png
    创建版本控制器:php think make:controller v1/Index
    请求时候url地址上要跟上版本号,例如:xxx.com/api/v1/index.路由api.php配置如下:
    #路由配置
    use think\facade\Route; 
    Route::group(':version',function(){
    
        Route::group('index', function () {
            Route::get('','api/:version.Index/test'); 
            Route::get('agreement/:id','api/:version.Index/test1')->pattern(['id' => '\d+']);
            Route::get('logout', 'api/:version.Index/test2')->middleware('ApiJwt');
    
        }); 
    })->allowCrossDomain();
    
    
    四、通过header头信息传递版本号。优点是版本更迭不需改变url地址,直接改变请求头信息
    接口请求地址:xxx.com/api/index,版本通过header中的api-version参数传递,默认v1版本!
    use think\facade\Route;
    use think\facade\Request;
    $version = Request::header('api-version','v1');#接口版本
    Route::group('', function()use($version){
    
       //测试
        Route::group('index', function () use($version){
            Route::get('',"api/{$version}.Index/index");
            Route::get('test',"{$version}.Index/test");
    
        });
      
    })->allowCrossDomain();
    
    
    五、通过Accept头信息处理,优点是可以设置接口输出格式。这种没使用过,待实现...
    GET xxx.com/user/1
    Accept: application/vnd.tp6.v1+json
    

    相关文章

      网友评论

          本文标题:api版本控制的几种方式!

          本文链接:https://www.haomeiwen.com/subject/vhcarxtx.html