本文只介绍两种,比较实用,也在工作中常见
一、整体方案描述如下图
二、统一版本管理
1.方案,采用上图方案1;前后端需要同步代码的管理,增加版本号。后端可以在Controller层路径增加{version},
2.优点:代码管理、实现简单; 缺点:相同URL无法搞多个方法实现;前端存在多个版本访问不支持。
三、多版本支持(API多个版本同时存在访问)
1.方案,上图两个方案都能实现,区别就是版本在 “URL”还是在“请求参数”中
2.优点:Api可以存在多个版本,相同路径;
四、代码实现
如下代码采用了路径带版本方式,支持了多版本API。
1.ApiVersion注解实现
@Target({ElementType.METHOD,ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Mapping public @interface ApiVersion { double value() default 2.0; }
2.ApiVersionCondition版本匹配实现(支持了版本号vd.d格式,如果其他格式需要改造)
@Data public class ApiVersionCondition implements Re