thinkphp6: API 多版本控制(php 8.1.1 / thinkphp v6.0.10LTS )
2023-09-14 09:01:18 时间
一,配置api多版本:
1,目录结构:
![](https://img2022.cnblogs.com/blog/1938691/202201/1938691-20220127214846853-178853294.png)
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
返回:
![](https://img2022.cnblogs.com/blog/1938691/202201/1938691-20220127214846906-1833558139.png)
2,访问:
http://192.168.219.6:8000/v2/home/tabbar
返回:
![](https://img2022.cnblogs.com/blog/1938691/202201/1938691-20220127214846919-1715492433.png)
四,查看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
相关文章
- PHP pcntl多进程实例
- 给各位PHP程序员十点未来的建议
- PHP 在 Laravel 中动态隐藏 API 字段
- windows下配置nginx+php环境
- Linux下安装php环境并且配置Nginx支持php-fpm模块
- php+mysql模糊查询功能
- thinkphp6: API 多版本控制(php 8.1.1 / thinkphp v6.0.10LTS )
- thinkphp6: 给接口api做签名验证(php 8.1.1 / thinkphp v6.0.10LTS )
- PHP 常用的header头部定义汇总
- php curl批处理--可控并发异步
- 运维力挺PHP完爆Java
- [PHP] 浅谈 Laravel Authentication 的 auth:api
- [PHP] 误读支付宝接口可能引发的乌龙
- Atitit.跨语言反射api 兼容性提升与增强 java c#。Net php js
- Atitit.跨语言反射api 兼容性提升与增强 java c#。Net php js
- atitit.跨语言实现备份mysql数据库 为sql文件特性 api 兼容性java c#.net php js
- Atitit.跨平台预定义函数 魔术方法 魔术函数 钩子函数 api兼容性草案 v2 q216 java c# php js.docx
- Atitit.跨语言反射api 兼容性提升与增强 java c#。Net php js
- Atitit. 二进制数据ascii表示法,与base64编码解码api 设计标准化总结java php c#.net
- PHP 多维数组
- PHP ini_set