php版本控制在线推送升级,ThinkPHP5:app版本控制,版本升级接口开发

目录

0x00 app版本控制解决方案

0x01 API接口文档编写

0x02 APP 调试

0x03APP版本表结构的设计

0x04 APP 版本升级接口开发(一)

0x05 APP 版本升级接口开发(二)

0x00 app版本控制解决方案

可以在controller下创建v1 v2等文件夹 对应不同的版本

5b8b5317a9422241174126aee7dac96a.png

这样我们在更新v2版本的时候v1版本就不会受到影响

对应的路由配置可以这样写:

Route::resource('api/:ver/cat','api/:ver.Cat');

0x01 API接口文档编写

api接口文档:API的入参、出参格式

需要包含哪些内容:

API接口地址

请求方式:get put post delete

入参格式

出参格式

http code

0x02 APP 调试

0x03APP版本表结构的设计

5a60e41d5499cabb0ec8cf5f91a97d06.png

对应的应该在后台实现 版本管理 模块,实现增删改查基本功能即可

0x04 APP 版本升级接口开发(一)

一般当APP初始化的时候,就会向该接口发送一个get请求。

路由:

Route::get('api/:ver/init','api/:ver.Index/init');

该接口可以放在:

application\Api\controller\v1\IndexController.php 中

/**

* 客户端初始化接口

* 1.检测APP是否需要升级

*

*/

public function init(){

//app_type 去 ent_version表中查询

try{

$version = model('Version')->getLastNormalVersionByAppType($this->headers['app_type']);

}catch(\Exception $e){

return new ApiException('从数据表中获取版本内容失败!',500);

}

if(empty($version)){

return new ApiException("数据表中不存在该版本的相关信息",404);

}

//如果表中版本号大于header头中版本号则需要升级

if($version->version > $this->headers['version']){

$version->is_update = $version->is_force == 1?2:1;

}else{

$version->is_update = 0; //is_update 0 不需要更新 1需要更新 2强制更新

}

return show(config('api.success_code'),'获取版本信息成功!',$version,200);

}

getLastNormalVersionByAppType

/**

* @description: 通过apptype获取最后一条版本内容

* @param string $appType

* @return:

*/

public function getLastNormalVersionByAppType($appType =''){

$data = [

'status'=>1,

'app_type'=>$appType,

];

$order = [

'id'=>'desc',

];

return $this->where($data)

->order($order)

->find();

}

0x05 APP 版本升级接口开发(二)

ent_app_active表 用于记录用户的基本信息(其实就是http报文中header头记录的信息),用于统计。

baa0eeb7bbe96547e6f42614a1dc27ee.png

原来代码优化:

public function init(){

//app_type 去 ent_version表中查询

try{

$version = model('Version')->getLastNormalVersionByAppType($this->headers['app_type']);

}catch(\Exception $e){

return new ApiException('从数据表中获取版本内容失败!',500);

}

if(empty($version)){

return new ApiException("数据表中不存在该版本的相关信息",404);

}

//如果表中版本号大于header头中版本号则需要升级

if($version->version > $this->headers['version']){

$version->is_update = $version->is_force == 1?2:1;

}else{

$version->is_update = 0; //is_update 0 不需要更新 1需要更新 2强制更新

}

//记录用户的基本信息 用于统计

$actives = [

'version'=>$this->headers['version'],

'app_type'=>$this->headers['app_type'],

'did'=>$this->headers['did'],

];

try{

model('AppActive')->add($actives);

}catch(\Exception $e){

//todo 可以记录到日志中

//Log::write();

}

return show(config('api.success_code'),'获取版本信息成功!',$version,200);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值