您的位置:首页 > 编程语言 > PHP开发

php实现api多版本的思考

2017-07-01 00:00 309 查看

问题:

如何在yii中具体实现api多版本

如何避免代码冗余,方便维护

除了接口代码的版本管理,还要考虑接口文档的版本管理

至多保留维护多少版本需要限定,避免维护过多版本

实现方式:

1 . 每个版本copy一份代码作为一个模块

优点:实现简单粗暴

缺点:维护成本太大、代码冗余严重

2 . 使用spl的autoload,根据传递来的版本号,查找接口对应的action在存在的版本目录由近及远,找到并加载。

优点:实现接口增量更新,减少维护工作量和冗余代码

缺点:每个接口请求都需要查找,性能低,若用户端发生问题,根据版本号也并不方便定位,实现也比较复杂

3 . 分别定义各版本controller,当接口有大变动时,copy出新的controller,将有变动的action指向新的action路径,其他的action还是指向原来路径,不做改动。

优点:实现简单,每个版本使用的接口及其映射的action都非常清晰,也能够方便地对每个版本接口进行控制,并且代码不冗余。

缺点:每次新版本都得新写controller,不同版本的model和component没隔离,会相互污染(但二者通常都是原子性的,不会做大改动)

4 . 按模块划分,controller中的action按3实现

优点:每个模块特有的部分都会分散在模块中

缺点:model、compenent等会出现各种版本model、component,过于零散,维护困难;新代码调用老代码的方法,若不直接copy老代码,调用老module中的特性,攀枝错节依赖太多。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php接口 api多版本