MVC 的接口版本支持
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 分析 |