作为程序员一定要保持良好的睡眠,才能好编程

API版本控制的几种思路

发布时间:2019-03-13


在开发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