zoukankan      html  css  js  c++  java
  • Spring中统一相同版本的api请求路径的一些思考

    Spring中统一相同版本的api请求路径的一些思考

    问题场景

    当我们在实际开发中,可能会遇到开发相同同版本的api

    假设相同版本的api请求路径为/v1/functionA,/v1/functionB

    因为按照业务进行了划分,这两个对外暴露的api分别在两个不同的Controller

    因此可能存在以下代码

    @Controller
    @RequestMapping("/v1")
    public class FunctionControllerA{
        @RequestMapping("/functionA")
        public void functionA(){
            //Some thing to do...
        }
    }
    
    @Controller
    @RequestMapping("/v1")
    public class FunctionControllerB{
        @RequestMapping("/functionB")
        public void functionB(){
             //Some thing to do...
        }
    }
    

    可以看到我们在类上声明了@RequestMapping("/v1")这个注解,当然也可以在方法上声明如@RequestMapping("/v1/functionA")

    如果这样的Controller不多可能还好,但如果存在很多个这样的情况,或者突然有一天上面突然让更换/v1/...开头的api地址改为/v1.0/..这样,是不是得更改很多个地方。

    那么有没有版本统一一个地方,达到修改一次即可

    解决方案

    声明一个统一api请求路径接口

    @RequestMapping("/v1")
    public interface VersionPathAware{}
    

    上述两个地址可改写为以下形式

    @Controller
    public class FunctionControllerA implements VersionPathAware {
        @RequestMapping("/functionA")
        public void functionA(){
            //Some thing to do...
        }
    }
    
    @Controller
    public class FunctionControllerB implements VersionPathAware {
        @RequestMapping("/functionB")
        public void functionB(){
            //Some thing to do...
        }
    }
    

    api请求路径为/v1/functionA,/v1/functionB

    并且如果版本名需要更换只需更改一个地方即可。

    当然这种方法是一种约定,实际开发中也可直接使用第一种方式

  • 相关阅读:
    听说在新的一年里你的证书过期了
    css 清楚浮动的8种方式
    Majority Element:主元素
    HDOJ 5296 Annoying problem LCA+数据结构
    hdu 5318 The Goddess Of The Moon 矩阵高速幂
    友盟页面统计
    用html语言写一个功课表
    苹果新的编程语言 Swift 语言进阶(二)--基本数据类型
    Atitit.mssql 数据库表记录数and 表体积大小统计
    jeecms 代码生成 Tools
  • 原文地址:https://www.cnblogs.com/xcmelody/p/11074763.html
Copyright © 2011-2022 走看看