👉 这是一个或许对你有用的社群
🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料:
《项目实战(视频)》:从书中学,往事中“练”
《互联网高频面试题》:面朝简历学习,春暖花开
《架构 x 系统设计》:摧枯拉朽,掌控面试高频场景题
《精进 Java 学习指南》:系统学习,互联网主流技术栈
《必读 Java 源码专栏》:知其然,知其所以然
👉这是一个或许对你有用的开源项目
国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。
功能涵盖 RBAC 权限、SaaS 多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号等等功能:
Boot 地址:https://gitee.com/zhijiantianya/ruoyi-vue-pro
Cloud 地址:https://gitee.com/zhijiantianya/yudao-cloud
视频教程:https://doc.iocoder.cn
来源:blog.csdn.net/m0_64360721
/article/details/125597943
介绍
不知道大家有没有在协同开发的过程中遇到这样的问题
好几个人同时开发同一个服务上的不同模块,导致你需要调试的接口总是被路由到别人的服务上,非常影响调试的效率,而且人越多越难受,总是请求不到自己的服务
如果只是自测还好,可以直接调用本地服务来避免这个问题,但是如果是和前端联调,前端又是统一请求的网关地址,那就有点麻烦了
所以我就想能不能在开发调试的时候,让某个接口路由到指定的服务呢?
于是我就实现了一个库来解决这个问题
❝
传送门:https://github.com/Linyuzai/concept/wiki/Concept-Router
❞
通过可视化页面来配置接口路径对应的服务地址
比如我们先把所有的接口都统一路由到开发环境的服务上,然后将需要调试的模块接口路由到我们本地的服务上(路径匹配存在优先级,更精确的优先匹配)
这样我们既可以让调试的接口路由到我们自己的服务,也可以让其他的接口不路由到我们的服务,毕竟有的时候其他接口的日志可能会把我们的日志刷掉,对调试造成影响
基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
项目地址:https://github.com/YunaiV/ruoyi-vue-pro
视频教程:https://doc.iocoder.cn/video/
集成
我把这个库做成零配置的方式,只需要引入相关依赖即可
implementation 'com.github.linyuzai:concept-router-spring-boot-starter:1.0.0'
<dependency>
<groupId>com.github.linyuzai</groupId>
<artifactId>concept-router-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>
按需求给需要配置的项目添加依赖
集成到网关(可以控制网关的转发)
集成到服务(可以控制服务间调用)
目前支持的网关是Gateway,支持的服务间调用是Feign
主要是这两个组件感觉大家用的比较多,而像Zuul或是Dubbo如果有需求的人比较多的话可能会在之后进行补充
对于不同的Spring Cloud和Spring Boot版本也是有兼容的,所以大家不用担心版本适配问题
但是不能保证在某些版本中能完全兼容,比如像2.0.x和2.2.x的gateway代码
public class LoadBalancerClientFilter implements GlobalFilter, Ordered {
//2.0.x的构造器
public LoadBalancerClientFilter(LoadBalancerClient loadBalancer) {
this.loadBalancer = loadBalancer;
}
}
public class LoadBalancerClientFilter implements GlobalFilter, Ordered {
//2.2.x的构造器
public LoadBalancerClientFilter(LoadBalancerClient loadBalancer,
LoadBalancerProperties properties) {
this.loadBalancer = loadBalancer;
this.properties = properties;
}
}
不同版本间的一些代码差异可能会导致一些问题,因为低版本的LoadBalancerClientFilter真的是一个方法写到头,一点机会都不给只能重写覆盖了,不过其他的场景一般还是留了接口让我能够自定义插入一些逻辑的
目前经过测试的是2.0.x,2.2.x,2.6.x,如果大家在集成之后出现报错或是不生效的情况,可以联系我并提供Spring Cloud和Spring Boot版本就行了
基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
项目地址:https://github.com/YunaiV/yudao-cloud
视频教程:https://doc.iocoder.cn/video/
配置
虽说可以零配置,不过也提供了一些配置可用于自定义
concept:
router:
enabled: true #是否启用路由功能
logger:
enabled: true #是否启用路由日志功能
banner:
enabled: true #是否输出Banner
repository:
type: local #路由数据存储类型,内存/本地文件
local:
path: /concept/router #本地文件的存储位置
management:
enabled: true #是否启用可视化页面
如果是线上环境的话大家可以通过concept.router.enabled=false
来关闭功能,或者直接不把依赖打包进去
使用
当我们在项目中集成之后就可以通过{服务地址}/concept-router/index.html
来访问可视化页面了,这里注意如果做了权限的话记得把/concept-router/**
加入白名单
添加
路由有这几个参数
快捷修改
提供了在列表上双击(匹配服务,匹配路径,服务地址)进行快速修改的功能
这个是我写前端耗时最久的功能了,你们看看我为了你们的用户体验真是煞费苦心啊(暗示一键三连,不是。。。搞串了)
是否生效
那么怎么判断路由配置是否生效呢
在Gateway转发或Feign调用时输出Router >>前缀的日志就说明路由生效了
欢迎加入我的知识星球,全面提升技术能力。
👉 加入方式,“长按”或“扫描”下方二维码噢:
星球的内容包括:项目实战、面试招聘、源码解析、学习路线。
文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)