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. js将时间转换为时间戳

    转自http://zhidao.baidu.com/link?url=jwmRLUKIC92fNeS1l8PuZltmZIN--LJFtKd9G6SYEjFfCu_pFGyXsh54txzv22E0g ...

  2. BZOJ3110:[ZJOI2013]K大数查询

    浅谈树状数组与线段树:https://www.cnblogs.com/AKMer/p/9946944.html 题目传送门:https://www.lydsy.com/JudgeOnline/prob ...

  3. AtCoder Grand Contest 010 C:Cleaning

    题目传送门:https://agc010.contest.atcoder.jp/tasks/agc010_c 题目翻译 给你一棵树,每个点有个权值,每次操作可以选择两个度数为\(1\)的结点,然后让这 ...

  4. CentOS 6.6 搭建Zabbix 3.0.3 过程

    分享CentOS 6.6下搭建Zabbix 3.0.3 的过程,希望都大家有所帮助. 环境安装 系统环境: # cat /etc/RedHat-release CentOS release 6.6 ( ...

  5. Python3解leetcode Linked List Cycle

    问题描述: Given a linked list, determine if it has a cycle in it. To represent a cycle in the given link ...

  6. Windows WMIC命令使用详解1

    https://blog.csdn.net/enweitech/article/details/51982114 在CMD和Powershell中 使用WMIC 先决条件: a. 启动Windows ...

  7. DataWindow.Net V2.5原始文件下载

    DW2.5 原始安装程序下载 http://download.sybase.com/eval/datawindowNET_25_eval/CD50090-55-0250-01.zip

  8. 《Java多线程编程核心技术》读后感(十)

    一生产一消费:操作栈 本实例是使生产者向堆栈List对象中放入数据,使消费者从List堆栈中取出数据.List最大容量是1 package Third; import java.util.ArrayL ...

  9. 2014 ACM广东省赛总结

    2014年广东省赛在化工大学城开,5月10日开幕式&热身赛,5月11日正式赛. 热身赛的时候,开幕式说有两小时,于是我们愉快的切题了,像平常组队赛那样很快出了两题,但卡在后面两题切不动了.这时 ...

  10. C#——传值参数(3)

    上篇文章我与大家共同学习了 值参数——引用类型这次与大家共同学习 传值参数--引用类型,不创建新对象,只操作对象这是个思维导图:我们仍需记住:1.值参数创建变量的副本 2.对值参数的改变不会影响变量的 ...