接口API版本管理

1. 引入jar依赖

<dependency>
    <groupId>com.slowlybirld</groupId>
    <artifactId>api-version</artifactId>
    <version>1.0.0</version>
</dependency>

2. 在项目中加上如下配置

@Configuration
public class WebConfig extends WebMvcConfigurationSupport {

    @Override
    @Bean
    public RequestMappingHandlerMapping requestMappingHandlerMapping() {
        VersionConfig versionConfig = new VersionConfig();
        // 匹配规则初始化,可以调整顺序设置优先级
        List<RuleMatcher> ruleMatcherList = new ArrayList<>(3);
        ruleMatcherList.add(new HeaderRuleMatcher(versionConfig));
        ruleMatcherList.add(new ParamRuleMather(versionConfig));
        ruleMatcherList.add(new PathRuleMather(versionConfig));

        // 初始化HandlerMapping
        RequestMappingHandlerMapping handlerMapping =
                new ApiVersionRequestMappingHandlerMapping(versionConfig, ruleMatcherList);
        handlerMapping.setOrder(0);
        handlerMapping.setInterceptors(getInterceptors());
        return handlerMapping;
    }
}

3. 测试

3.1 加入注解之前的请求

请求结果

3.2 加入注解后的请求

请求结果:

3.3 版本参数设置

如果没有加上版本的请求参数,则接口无法调用。

为什么参数名为 “v”?

jar包中定义的:

@ApiVersion注解也是jar包中定义好的:

上述是 POST 请求的参数设置,GET请求示例:

/test/test?v=1.0.0 

Rest请求示例:

/test/test/1.0.0

4. 说明

如果接口上没有加 @ApiVersion 注解,则请求的时候不需要版本参数;

如果指定版本号(例如1.0.3)的接口没有匹配到,则自动寻找最新版本(1.0.0)的接口,都没有则 404。

5. jar包下载

com.slowlybirld.apiversion


版权声明:本文为zhou520yue520原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。