Solon v3.3.3

MVC 的接口版本支持

</> markdown

v3.4.0 后支持


接口版本通过两部分实现:

  • 申明部分:版本申明与注册到路由器(通过 @Mapping(version) 注解申明)
  • 路由部分:请求时,由过滤器分析出版本号;路由器匹配后执行处理

1、配置

配置版本过滤器

@Configuration
public class VersonConfig {
    @Bean
    public Filter filter() {
        return new VersionFilter(new VersionResolverHeader("Api-Version"));
    }
}

2、应用示例

应用

@Mapping("/demo/api")
@Controller
public class VersionController {
    @Mapping(version = "1.0")
    public String v1() {
        return "v1.0";
    }

    @Mapping(version = "2.0")
    public String v2() {
        return "v2.0";
    }
}

单元测试

@SolonTest(App.class)
public class VersionTest extends HttpTester {
    @Test
    public void case1() throws IOException {
        assert path("/demo2/api").header("Api-Version","1.0").get().contains("v1.0");
    }

    @Test
    public void case2() throws IOException {
        assert path("/demo2/api").header("Api-Version","2.0").get().contains("v2.0");
    }
}

3、VersionResolver 接口及实现

public interface VersionResolver {
    /**
     * 版本分析
     *
     * @param ctx 上下文
     */
    void versionResolve(Context ctx);
}

内置版本分析器参考(更丰富的,可以定制):

分析器描述
VersionResolverHeader基于 header 分析
VersionResolverParam基于 param 分析
VersionResolverPath基于 path 分析