Spring cloud gateway——动态操作路由的网关

本人基于网上的博客,具体参考的哪篇有点久远了,忘了。(致敬原作者)

实现了一个可以动态增加,删除路由的api网关,持久化层用的是内嵌式数据库h2(未实现完全)。

本工程仅作想法实现参考。谢谢

github地址:https://github.com/OwenZhouzhou/spring-gateway-demo

介绍和使用方式参考如下,谢谢。

Spring cloud gateway 一共有15个predicate(断言), 25个filter(过滤器).

Predicates(图不全):

Filters(图不全):

请求流程图如下:

以为为几个例子。

添加路由:

127.0.0.1:8082/route/add   method:post   content-type:application/json

Data示例(id为路由编号,需要唯一,):

1. path断言, 表示访问127.0.0.1:8082/meteor_93实际上访问的是https://blog.csdn.net/meteor_93

{

"id":"path_route",

"predicates":

[

{"name":"Path","args":{"path":"/meteor_93"}

}

],

"uri":"https://blog.csdn.net"

}

  1. After断言,在此时间之后匹配:

[{"filters":[],"id":"after_route","order":0,"predicates":[{"args":{"_genkey_0":"2018-03-18T17:32:58.129+08:00[Asia/Shanghai]"},"name":"After"}],"uri":"https://blog.csdn.net"}]

  1. Before断言,在此时间之前匹配

{"filters":[],"id":"before_route","order":0,"predicates":[{"args":{"_genkey_0":"2020-03-18T17:32:58.129+08:00[Asia/Shanghai]"},"name":"Before"}],"uri":"https://blog.csdn.net"}

  1. Between断言,在此时间区域内

{"filters":[],"id":"between_route","order":0,"predicates":[{"args":{"datetime1":"2022-01-22T17:27:58.907+08:00[Asia/Shanghai]","datetime2":"2022-01-22T17:27:58.909+08:00[Asia/Shanghai]"},"name":"Between"}],"uri":"https://blog.csdn.net"}

  1. Cookie断言

{"filters":[],"id":"cookie_route","order":0,"predicates":[{"args":{"_genkey_0":"chocolate","_genkey_1":"ch.p"},"name":"Cookie"}],"uri":"https://blog.csdn.net"}

.........

 

Filter:

  1. AddRequestHeader Filter, 匹配断言通过后,进入filter

{"filters":[{"args":{"_genkey_0":"X-Request-Foo","_genkey_1":"Bar"},"name":"AddRequestHeader"}],"id":"add_request_header_route","order":0,"predicates":[{"args":{"_genkey_0":"2017-01-20T17:42:47.789-07:00[Asia/Shanghai]"},"name":"After"}],"uri":"https://blog.csdn.net"}

表示在请求头中添加 name = X-Request-Foo,value = Bar  (后台如下获取)

 

删除路由:

127.0.0.1:8082/route/delete/{routeId}    method:get

更新路由:

127.0.0.1:8082/route/update   method:update   content-type:application/json

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要基于Nacos实现Spring Cloud Gateway动态由,可以按照以下步骤进行操作: 1. 添加依赖:在Spring Cloud Gateway项目的pom.xml文件中添加相应的依赖,包括spring-cloud-starter-gatewayspring-cloud-starter-alibaba-nacos-discovery等。 2. 配置Nacos注册中心:在application.properties或application.yml配置文件中添加Nacos注册中心的相配置,包括Nacos服务器地址、命名空间、分组等信息。 3. 配置动态由:创建一个RouteLocator Bean,并在其中使用Nacos的服务发现来定义动态由规则。可以通过Nacos的配置中心来管理由规则的动态更新。 ```java @Configuration public class GatewayConfig { @Bean public RouteLocator customRouteLocator(RouteLocatorBuilder builder) { return builder.routes() .route("service_route", r -> r.path("/api/v1/**") .uri("lb://service-provider")) .build(); } } ``` 上述示例中,定义了一个名为service_route的由规则,将请求径以/api/v1/开头的请求转发到名为service-provider的微服务上。 4. 启动Gateway应用:启动Spring Cloud Gateway应用,它会自动从Nacos注册中心获取动态由规则并进行由转发。 5. 管理动态由:使用Nacos的配置中心来管理动态由规则。可以通过Nacos的控制台或API来添加、修改或删除由规则,Gateway应用会自动更新并生效。 通过以上步骤,就可以基于Nacos实现Spring Cloud Gateway动态由了。你可以根据实际需求和业务场景,添加更多的由规则和配置。希望对你有所帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值