在开发api的时候,需要注重API版本的变化,很可能这里访问时1.0的版本
那里就要访问2.0的版本的API ,那么应该怎么区分呢?
1、通过子域名的形式传递,例如:
通过子域名(或子目录)
第一个办法,是直接使用两个模块(或者应用)来实现,对于架构改变比较大的API版本(尤其是不同版本之间基本没法共用、更改框架甚至采用不同的语言实现)通常会这样选择。
目录结构如下:
api
├─application
│ ├─v1
│ │ ├─controller
│ │ ├─model
│ │ ├─config
│ │ └─ ...
│ ├─v2
│ │ ├─controller
│ │ ├─model
│ │ ├─config
│ │ └─ ...
│ ...
请求方式
GET https://api.tp5.com/v1/user/1
GET https://api.tp5.com/v2/user/1
当然,你也可以通过子域名绑定模块实现下面的方式访问
GET https://v1.api.tp5.com/user/1
GET https://v2.api.tp5.com/user/1
2、通过url中的version传递
通过请求参数
对于刚开始没有做好版本规划,后期迭代维护过程中增加了新的版本,考虑到架构的改造成本,可能会考虑下面的方式:
GET https://api.tp5.com/user/1GET https://api.tp5.com/user/1?version=v2
由于缺乏很好的路径和类库目录规范,如果频繁更新版本的话,建议把版本的架构设计升级成后面的两种方式。
3、通过header头传递
$_SERVER['VERSION']=123