基于TP的接口平滑迭代

浏览:888 发布日期:2016/06/22 分类:技术分享 关键字: Tp 平滑升级
版本升级原则:
1. 在不影响原来功能的基础上迭代
2. 代码代码容易剔除

当前场景:
线上已经有一个在运行的App,以 post 请求接口的方式运行。

我的实现方式:
基于ThinkPHP的多级控制器(http://document.thinkphp.cn/manual_3_2.html#define_controller);
在客户端调用传入版本参数 -- api_version,不传默认为v1,该次升级的版本为v2,以后的版本可以传入 v3、v4、v5 ...;
根据文档,新建控制器的时候,主要命名空间:namespace App\Controller\V2(v2为版本);
因为我的架构是使用 post 方式,所有的请求都会到 IndexController,我也是在 IndexController 控制里边通过thinkPHP的A方法路由调用具体接口的。//根据版本的不同,调用不同的服务器api
//$controller $action 都为post过来的具体参数。
$api_version = strtoupper(I('post.api_version', 'V1'));
switch($api_version){
    case 'V1':
        A($controller)->$action($args);
        break;
    case 'V2':
        A($api_version.'/'.$controller, '', 2)->$action($args);
        break;
}
我的目录结构


注意:
!!接口名称尽量保持不变,增加调用者的可控性,有时候要降级,需要调用v1的接口,直接更改客户端传入的 api_version 参数;
!!不耦合到原来业务逻辑;
最佳答案
评论() 相关
后面还有条评论,点击查看>>