短信预约-IT技能 免费直播动态提醒
Spring Cloud Gateway编码实现任意地址跳转的示例
目录
- 本篇概览
- 一般路由规则
- 特殊规则
- 设计
- 源码下载
- 编码
- 配置
- 开发和启动后台服务,模拟生产和测试环境
- 验证
这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
本篇概览
作为《Spring Cloud Gateway实战》系列的第十四篇,本文会继续发掘Spring Cloud Gateway的潜力,通过编码体验操控网关的乐趣,开发出一个实用的功能:让Spring Cloud Gateway应用在收到请求后,可以按照业务的需要跳转到任意的地址去
一般路由规则
先来看一个普通的路由规则,如下所示,意思是将所有/hello
@Data
@ToString
public static class BizLogicRouteConfig {
// 生产环境的服务地址
private String prodEnvUri;
// 测试环境的服务地址
private String testEnvUri;
}
}
在apply方法中,重新创建ServerHttpRequest和Route对象,它们的参数可以按照业务需求随意设置,然后再将这两个对象设置给SpringCloud gateway的处理链中,接下来,处理链上的其他过滤拿到的就是新的ServerHttpRequest和Route对象了
配置
假设生产环境地址是http://127.0.0.1:8082,测试环境地址是http://127.0.0.1:8087,整个SpringCloud Gateway应用的配置文件如下,可见使用了刚刚创建的过滤器,并且为此过滤器配置了两个参数:
server:
#服务端口
port: 8086
spring:
application:
name: gateway-dynamic-route
cloud:
gateway:
routes:
- id: path_route
uri: http://0.0.0.0:8082
predicates:
- Path=/hello
@GetMapping("/str")
public String helloStr() {
return Constants.HELLO_PREFIX + ", " + dateStr() + " (from test enviroment)";
}
}
以上两个服务,对应的代码都在我的Github仓库中,如下图红框所示:
启动gateway-dynamic-route、provider-hello、provider-for-test-user服务
此时,SpringCloud gateway应用和两个后台服务都启动完成,情况如下图,接下来验证刚才开发的过滤器能不能像预期那样转发:
验证
用postman工具向gateway-dynamic-route应用发起一次请求,返回值如下图红框所示,证明这是provider-hello的响应,看来咱们的请求已经正常到达:
再发送一次请求,如下图,这次在header中加入键值对,得到的结果是provider-for-test-user的响应
至此,过滤器的开发和验证已经完成,通过编码,可以把外部请求转发到任何咱们需要的地址去,并且支持参数配置,这个过滤器还有一定的可配置下,减少了硬编码的比率,如果您正在琢磨如何深度操控SpringCloud Gateway,希望本文能给您一些参考
到此这篇关于Spring Cloud Gateway编码实现任意地址跳转的示例的文章就介绍到这了,更多相关Spring Cloud Gateway 任意地址跳转内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341