thinkphp6: API 多版本控制(php 8.1.1 / thinkphp v6.0.10LTS )

一,配置api多版本:

1,目录结构: thinkphp6: API 多版本控制(php 8.1.1 / thinkphp v6.0.10LTS ) 2,路由: route/app.php
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
 
use think\facade\Route;

$arr_version = ["v1","v2"];
 
$uri = request()->server('REQUEST_URI');
$arr_uri = explode("/",$uri);
global $apiVersion;
if (!isset($arr_uri[1]) || trim($arr_uri[1]) == '') {
    $apiVersion = "";
} else {
      $tmpVersion = trim($arr_uri[1]);
      if (in_array($tmpVersion,$arr_version)) {
          $apiVersion = $tmpVersion;
      } else {
          $apiVersion = "";
      }
}
 
//Route::rule($version.'/:controller/:function', $version.'.:controller/:function');
 
Route::group($apiVersion.'/home',function() {
    global $apiVersion;
    Route::get('tabbar',$apiVersion.'.Home/tabbar') ;
    //Route::get('/recent','api/:version.Product/getRecent') ;
});

说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

         对应的源码可以访问这里获取: https://github.com/liuhongdi/
         或: https://gitee.com/liuhongdi

说明:作者:刘宏缔 邮箱: 371125307@qq.com

二,php代码开发:

1,controller/v1/Home.php
<?php
declare (strict_types = 1);
 
namespace app\controller\v1;
 
use app\BaseController;
use app\result\Result;
 
class Home extends BaseController
{
    public function tabBar() {
        $button = [
            ['id'=>1,'name'=>'首页'],
            ['id'=>2,'name'=>'商品列表'],
            ['id'=>3,'name'=>'我的'],
        ];
        return Result::Success(["button"=>$button]);
    }
}
2,controller/v2/Home.php
<?php
declare (strict_types = 1);
 
namespace app\controller\v2;
 
use app\BaseController;
use app\result\Result;
 
class Home extends BaseController
{
    public function tabBar() {
        $button = [
            ['id'=>1,'name'=>'首页'],
            ['id'=>2,'name'=>'商品列表'],
            ['id'=>3,'name'=>'购物车'],
            ['id'=>4,'name'=>'我的'],
        ];
        return Result::Success(["button"=>$button]);
    }
}

三,测试效果:

1,访问:
http://192.168.219.6:8000/v1/home/tabbar
返回: thinkphp6: API 多版本控制(php 8.1.1 / thinkphp v6.0.10LTS ) 2,访问:
http://192.168.219.6:8000/v2/home/tabbar
返回: thinkphp6: API 多版本控制(php 8.1.1 / thinkphp v6.0.10LTS )

四,查看php和thinkphp的版本: 

php:
liuhongdi@lhdpc:/data/php/admapi$ php --version
PHP 8.1.1 (cli) (built: Dec 20 2021 16:12:16) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.1, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.1, Copyright (c), by Zend Technologies 
thinkphp:
liuhongdi@lhdpc:/var/www/html$ cd /data/php/admapi/
liuhongdi@lhdpc:/data/php/admapi$ php think version
v6.0.10LTS 

 

上一篇:Intent


下一篇:SpringBoot整合JSP