美文网首页
springMVC接口版本号管理

springMVC接口版本号管理

作者: Imstillaboy | 来源:发表于2019-05-28 10:39 被阅读0次

    要求:

     1.每个restful接口有自己的版本号,并且restful接口的requestMapping要相同

     2.保证接口版本号能够向前兼容,比如版本号v2时,如果没有v2的版本接口,可以调用v1的接口。

实现逻辑:

    1.自定义注解apiVersion(int)

    2.实现org.springframework.web.servlet.mvc.condition.RequestCondition接口,并重写相应的方法。

    3.继承org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping类,并重写方法。

    4.重写WebMvcAutoConfiguration中的requestMappingHandlerMapping,将3中自定义的类进行bean覆盖注入Spring 容器。

下面贴入代码:

自定义版本号注解(requestMapping中的变量参数) 版本号管理和匹配逻辑 自定义requestMappingHandlerMapping 覆盖并初始化bean,注入spring容器 类的requestMapping中加入自定义变量 测试代码

控制台查看requestMapping相关输出:

t.c.c.CustomRequestMappingHandlerMapping : Mapped "{[/{version}/web/user/test],methods=[GET],produces=[application/json;charset=UTF-8],custom=[com.yoogurt.taxi.common.condition.ApiVersionCondition@5fd5d6d1]}" onto public com.yoogurt.taxi.common.vo.ResponseObj com.yoogurt.taxi.user.controller.web.UserWebController.testGateway()

2019-05-28 10:12:56.309  INFO 15469 --- [          main] t.c.c.CustomRequestMappingHandlerMapping : Mapped "{[/{version}/web/user/test],methods=[GET],produces=[application/json;charset=UTF-8],custom=[com.yoogurt.taxi.common.condition.ApiVersionCondition@5e643402]}" onto public com.yoogurt.taxi.common.vo.ResponseObj com.yoogurt.taxi.user.controller.web.UserWebController.testGateway2()

请求接口uri:{version}/web/user/test,其中version是正则表达式“v(\\d+)/”。

请求效果:

v0版本号请求无效,因为我们的版本号是向前匹配,并且是从v1开始 v1版本号请求有效,并且请求的是v1对应的接口 v2版本号请求有效,并且请求的是v2对应的接口 v3版本号请求有效,并且请求的是v2对应的接口,因为是向前匹配,查询最近的一个版本接口

分享完毕,如有不当之处请留言或者邮箱:wudy875498@163.com

相关文章

  • springMVC接口版本号管理

    要求: 1.每个restful接口有自己的版本号,并且restful接口的requestMapping要相...

  • 2019-10-14 SpringMVC与Servlet接口 S

    SpringMVC与Servlet接口 Servlet接口规范 Servlet 接口 定义servlet接口规范i...

  • 2019-11-21

    字体色或 只有接口有变化的时候才需要增加版本号, 接口没有变化只是接口的处理有变化不能改变版本号

  • SpringMVC Api接口版本控制

    SpringMVC Api接口版本控制 1. 问题 ​ 后端服务在提供api接口时,随着业务的变化,原有的接口...

  • REST服务与RestfulAPI风格

    解决当前各系统间接口规范不统一问题 需要版本号(ansible接口建议新老版本间用版本号区别) post get ...

  • SpringWebFlux过滤器的使用姿势

    WebFlux中过滤器的使用方法和SpringMVC中相似,都是实现接口中的filter方法,SpringMVC中...

  • SpringMVC源码系列:HandlerMapping

    HandlerMapping接口是用来查找Handler的。在SpringMvc中,DispatcherServl...

  • spring拦截器的实现

    1.实现接口HandlerInterceptor 2.配置springMvc.xml文件

  • 登录

    接口约定 使用httpsrestful风格用户端:https://{域名}/api/{接口版本号}/{resour...

  • 用户信息

    接口约定 使用httpsrestful风格用户端:https://{域名}/api/{接口版本号}/{resour...

网友评论

      本文标题:springMVC接口版本号管理

      本文链接:https://www.haomeiwen.com/subject/bxfrtctx.html