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

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

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

Spring中统一相同版本的api请求路径的一些思考的更多相关文章

  1. 在Android中,使用Kotlin的 API请求简易方法

    原文标题:API request in Android the easy way using Kotlin 原文链接:http://antonioleiva.com/api-request-kotli ...

  2. 阶段3 2.Spring_10.Spring中事务控制_4 spring中事务控制的一组API

    分析aop的 xml 的代码.更直观一些 事务提交和回滚就是我们重复的代码 spring业余事务管理器,我们拿过来直接用就可以 提交和回滚的后面直接调用释放.所以释放资源之类就是多余的 在绑定连接到线 ...

  3. Spring中,请求参数处理

    Spring中,Controller里,获取请求数据有多种情况 在使用@RequestParam的方式获取请求中的参数时, 如果没有设置required这个属性,或者主动设置为true,则意味着这个参 ...

  4. Spring Boot中使用Swagger2生成RESTful API文档(转)

    效果如下图所示: 添加Swagger2依赖 在pom.xml中加入Swagger2的依赖 <!-- https://mvnrepository.com/artifact/io.springfox ...

  5. Spring Boot 2.x基础教程:找回启动日志中的请求路径列表

    如果您看过之前的Spring Boot 1.x教程,或者自己原本就对Spring Boot有一些经验,或者对Spring MVC很熟悉.那么对于Spring构建的Web应用在启动的时候,都会输出当前应 ...

  6. Spring拦截器中通过request获取到该请求对应Controller中的method对象

    背景:项目使用Spring 3.1.0.RELEASE,从dao到Controller层全部是基于注解配置.我的需求是想在自定义的Spring拦截器中通过request获取到该请求对应于Control ...

  7. Spring Boot中使用Swagger2自动构建API文档

    由于Spring Boot能够快速开发.便捷部署等特性,相信有很大一部分Spring Boot的用户会用来构建RESTful API.而我们构建RESTful API的目的通常都是由于多终端的原因,这 ...

  8. Spring Boot中使用Swagger2构建RESTful API文档

    在开发rest api的时候,为了减少与其他团队平时开发期间的频繁沟通成本,传统做法我们会创建一份RESTful API文档来记录所有接口细节,然而这样的做法有以下几个问题: 1.由于接口众多,并且细 ...

  9. 【Azure API 管理】在APIM中使用客户端证书验证API的请求,但是一直提示错误"No client certificate received."

    API 管理 (APIM) 是一种为现有后端服务创建一致且现代化的 API 网关的方法. 问题描述 在设置了APIM客户端证书,用户保护后端API,让请求更安全. 但是,最近发现使用客户端证书的API ...

随机推荐

  1. ACM学习历程——UVA442 Matrix Chain Multiplication(栈)

    Description   Matrix Chain Multiplication  Matrix Chain Multiplication  Suppose you have to evaluate ...

  2. plsql developer点滴

    PLSql中查看编译错误的具体内容: 1. 打开Command Windows show errors procedure procedure_name 

  3. zk 09之:Curator之二:Path Cache监控zookeeper的node和path的状态

    在实际应用开发中,当某个ZNode发生变化后我们需要得到通知并做一些后续处理,Curator Recipes提供了Path Cache 来帮助我们轻松实现watch ZNode. Path Cache ...

  4. linux 命令2

    who who am i ssh scott@192.168.1.105 ps aux | grep pts/8 pwd // where are you? Page 205 mkdir -p dir ...

  5. Balloon Comes! hdu(小数位数处理)

    Balloon Comes! Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s): A ...

  6. MATLAB 内存容量修改 zz

    MATLAB 内存容量修改 - Oliver的日志 - 网易博客 在用MATLAB做图像处理时 经常会碰到内存溢出的情况,可用如下方法修改,使得MATLAB的内存容量最大: 出自matlab:matl ...

  7. JSP编译指令、JSP动作指令

    JSP编译指令:通过指令中的属性配置来向JSP容器发出指令,用来控制JSP页面的某些特征 JSP指令格式:<%@ 指令名   [一个或多个指令属性]%> 1.page:用于对JSP页面中的 ...

  8. POJ-3050

    Hopscotch Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4385   Accepted: 2924 Descrip ...

  9. HDU - 6081 2017百度之星资格赛 度度熊的王国战略

    度度熊的王国战略  Accepts: 644  Submissions: 5880  Time Limit: 40000/20000 MS (Java/Others)  Memory Limit: 3 ...

  10. GROUP BY 子句 和 ORDER BY子句连用注意

    ORDER BY一定要放到GROUP BY后面 并且 ORDER BY 里面的字段必须包含在GROUP BY 里面