实际开发常写的接口(优雅设计接口版本号)
实际开发常写的接口(优雅设计接口版本号)
作者:happyJared
来源:https://blog.mariojd.cn/how-to-design-spring-boot-api-version-number-elegantly.html
一般来说,系统上线以后,需求仍会发生变动,功能也会迭代更新。可能是接口参数发生变更,也有可能是业务逻辑需要调整,如果直接在原来的接口上进行修改,必然会影响原有服务的正常运行。
常见的解决方案,是在接口路径中加入版本号用于区分,此外还可以在参数甚至 header 里带上版本号。这里以在请求路径中带上版本号为例,如:http://IP:PORT/api/v1/test ,v1 即代表的是版本号。当然了,可以像这样,直接写死在 @RequestMapping("api/v1/test")属性中,不过下面提供了更为优雅的解决方案。
1.自定义版本号标记注解

2.重写相应的 RequestCondition


3.重写部分 RequestMappingHandlerMapping 的方法

4.配置注册自定义的 CustomRequestMappingHandlerMapping

5.编写接口,标记上相应的 @ApiVersion

6.启动 Application,测试及查看结果





