第一种方案:不使用版本
接口业务修改强制要求前端、客户端进行相应的升级和更新,可能存在兼容的问题
第二种方案:不使用版本
直接更换API名称,新功能使用新的API,老版本使用老的API
第三种方案:URI上添加版本号
http://xxx.com/api/user/login
http://xxx.com/api/v2/user/login
第四种方案:URI参数版本号
在URI的连接带参数或者在请求参数上加一个版本号
第五种方案:使用请求头来区分版本号
http://xxx.com/api/user/login
headers=[X-API-VERSION=1.0]
http://xxx.com/api/user/login
headers=[X-API-VERSION=2.0]
@GetMapping(value="/user/login",headers = "X-API-VERSION=1.0")
public Object v1(){
return new XXX("v1");
}
@GetMapping(value="/user/login",headers = "X-API-VERSION=2.0")
public Object v2(){
return new XXX("v2");
}
第六种方案:通过媒体类型进行版本控制
http://xxx.com/api/user/login
headers=[Accept=application/api-v1+json]
http://xxx.com/api/user/login
headers=[Accept=application/api-v2+json]
@GetMapping(value="/user/login",produces= "Accept=application/api-v1+json")
public Object v1(){
return new XXX("v1");
}
@GetMapping(value="/user/login",produces= "Accept=application/api-v2+json")
public Object v2(){
return new XXX("v2");
}