欢迎使用Markdown编辑器写博客
后端开发人员经常遇到接口升级、优化接口甚至重新定义一模一样新接口而且还得兼容旧版本接口。这样我们得维护两个一模一样接口,版本管理越来越重要。基于自定义注解获得请求头Header中apiVersion参数,版本大的转发不同接口上。
RequestMappingHandlerMapping请求详情
- 自定义版本注解
/**
* @Author: LailaiMonkey
* @Description:
* @Date:Created in 2020-10-14 17:47
* @Modified By:
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ApiVersion {
/**
* 版本号
* @return
*/
int value();
}
- 重写RequestCondition,自定义url匹配逻辑
/**
* @Author: LailaiMonkey
* @Description:
* @Date:Created in 2020-10-14 16:59
* @Modified By:
*/
public class ApiVersionCondition implements RequestCondition<ApiVersionCondition> {
/**
* 版本
*/
private int apiVersion;
ApiVersionCondition(int apiVersion) {
this.apiVersion = apiVersion;
}
/**
* 最近优先原则,方法定义的 @ApiVersion > 请求头定义apiVersion
*
* @param apiVersionCondition
* @return
*/