![e4e7efdabcb5177cb5590d76e4333c2f.png](https://img-blog.csdnimg.cn/img_convert/e4e7efdabcb5177cb5590d76e4333c2f.png)
前情回顾
上一节(第5讲),我们讲解了zuul的基本配置,如下链接
SpringCloud极简入门|zuul智能路由回退、认证、转发功能(五):https://www.toutiao.com/i6643405381466849800/
本章知识点很重要!很重要!很重要!,真的很重要,网上资料不是很多,所以建议收藏下转发
动态路由设置使zuul变得很灵活,但是网上的资料大多是基于动态配置实现的,这样导致如果需要配置的路由成千上万的话,难免会有瓶颈(内存、或者同步实效性)。
业务场景:我们需要一种动态转发机制实现一种动态改变url的场景,说白了
我们访问的时候是: http://localhost:8002/hello?name=zs&token=1
可是需要路由动态的设置host或者url比如变成:http://localhost:8001/hello?name=zs&token=1(注端口已变化)
而这种变化我们不采用配置文件配置的方式,那如何实现转发呢(基于数据某种规则,此处只演示静态的)
Demo开始
承接上篇用springcloud-02-getway-zuul模块
![c5baa57ffebebec2235f95a33dcc651f.png](https://img-blog.csdnimg.cn/img_convert/c5baa57ffebebec2235f95a33dcc651f.png)
分别启动:注册中心spring-cloud-eureka-002(端口7001),生产者一 spring-cloud-producter1-002(端口8001),生产者2 spring-cloud-producter2-002(端口8002) ,路由spring-cloud-zuul-002(端口6001)
路由增加个路由配置,也就是访问testforward规则的url时,会转发给消费者2
也就是访问http://localhost:6001/testforward/hello?name=zs&token=1 此时访问是生产者2的controller
![c240e683da2e83425cb883d449655933.png](https://img-blog.csdnimg.cn/img_convert/c240e683da2e83425cb883d449655933.png)
我们要做的是访问时动态的设置url使之变成访问 http://localhost:8001/hello?name=zs&token=1
如何做呢?很简单,不过错过了这篇需要查询很多资料了
增加一个拦截器(注意里面规则可以根据具体业务进行转发,以下只是一个demo,判断如果url含有testforward则转发到http://127.0.0.1:8001/)
![34fea45d646bde3404296c065820b5fc.png](https://img-blog.csdnimg.cn/img_convert/34fea45d646bde3404296c065820b5fc.png)
验证结果:完成动态转发
![569378daa3cb8a8af36b06560776dffc.png](https://img-blog.csdnimg.cn/img_convert/569378daa3cb8a8af36b06560776dffc.png)
End:
功能实现了就很简单,但是我们在寻找答案的时候总是那么难,所以还是需要热于分享的人出现,坚持写作1个月了,每晚都在凌晨一点睡,总是觉得时间不够用,不过还希望小伙伴们有所收获。
话外篇
截至目前粉丝已经999个了,这是个吉利数字,打算现在申请原创,希望得到大家的祝福,欢迎转发,真心希望能一次通过,虽然有点不现实,毕竟粉丝数比较少。不管结局如何在此感谢转发的小伙伴....
![b4329ed27fe47d8d3f5520174b5d672c.png](https://img-blog.csdnimg.cn/img_convert/b4329ed27fe47d8d3f5520174b5d672c.png)
文章数量82篇
![ec9df64dd0a0614d7d2efab9b4c7040a.png](https://img-blog.csdnimg.cn/img_convert/ec9df64dd0a0614d7d2efab9b4c7040a.png)
源码下载:https://github.com/shinians/springcloud-demos