SpringCloud Gateway 修改请求路径的过滤器(StripPrefix Filter和PrefixPath Filter)
转载自:https://blog.csdn.net/weixin_40991408/article/details/104165703
一:StripPrefix Filter
1.1 StripPrefix Filter 是一个请求路径截取的功能,我们可以利用这个功能来做特殊业务的转发。
1.2 修改 application-predicate-path.yml 文件,代码如下:
server:
port: 8769
#--- #三个横线表示再创建一个配置文件
spring:
#profiles: predicate-path #配置文件名 和 spring.profiles.active 相对应
#配置程序名为eureka-gateway-client
application:
name: eureka-gateway-client
cloud:
#设置路由规则
gateway:
discovery:
locator:
#是否与服务注册于发现组件进行结合,通过 serviceId 转发到具体的服务实例。
#默认为 false,设为 true 便开启通过服务中心的自动根据 serviceId 创建路由的功能
enabled: true
##表示将请求路径的服务名配置改成小写 因为服务注册的时候,向注册中心注册时将服务名转成大写的了
lower-case-service-id: true
routes:
#我们自定义的路由 ID,保持唯一性
- id: predicate_path
#代表从注册中心获取服务,且以lb(load-balance)负载均衡方式转发
uri: lb://eureka-client
#uri: http://localhost:8762
#断言
predicates:
#表示将以/HiController开头的请求转发到uri为lb://eureka-client的地址上
#转发地址格式为 uri/HiController/**
- Path=/hello/world/HiController/**
filters:
#过滤器 设置所有的 方法都会自动添加foo=bar
#- AddRequestParameter=key, bar
#当请求路径匹配到/hello/world/HiController/**会将包含hello和后边的字符串接去掉转发,
#StripPrefix=2就代表截取路径的个数,这样配置后当请求/hello/world/HiController/aaa后端匹配到的请求路径,
#就会变成http://localhost:8762/HiController/aaa
- StripPrefix=2
logging:
level:
org.springframework.cloud.gateway: debug
eureka:
client:
#服务注册地址
serviceUrl:
#注意: Eureka Server 的注册地址
#将服务提供者注册到三个Eureka Server中去
#defaultZone: http://peer1:8001/eureka/,http://peer2:8002/eureka/,http://peer3:8003/eureka/
#defaultZone: http://peer1:8001/eureka/
defaultZone: http://localhost:8761/eureka/
增加了这部分的代码
当请求路径匹配到/hello/world/HiController/**
会将包含hello和后边的字符串接去掉转发,StripPrefix=2就代表截取路径的个数,这样配置后当请求/hello/world/HiController/aaa
后端匹配到的请求路径,就会变成http://localhost:8762/HiController/aaa
1.3 启动 eureka-serve, eureka-client (8762,8763 端口),eureka-gateway-client 服务,浏览器访问 http://localhost:8761/
访问 http://192.168.0.105:8769/hello/world/HiController/aaa,得到如下结果:
从结果中可以看出 filter 生效了。
二:PrefixPath Filter
2.1 PrefixPath Filter 的作用和 StripPrefix 正相反,是在 URL 路径前面添加一部分的前缀。
2.2 修改 application-predicate-path.yml 文件,代码如下:
server:
port: 8769
#--- #三个横线表示再创建一个配置文件
spring:
#profiles: predicate-path #配置文件名 和 spring.profiles.active 相对应
#配置程序名为eureka-gateway-client
application:
name: eureka-gateway-client
cloud:
#设置路由规则
gateway:
discovery:
locator:
#是否与服务注册于发现组件进行结合,通过 serviceId 转发到具体的服务实例。
#默认为 false,设为 true 便开启通过服务中心的自动根据 serviceId 创建路由的功能
enabled: true
##表示将请求路径的服务名配置改成小写 因为服务注册的时候,向注册中心注册时将服务名转成大写的了
lower-case-service-id: true
routes:
#我们自定义的路由 ID,保持唯一性
- id: predicate_path
#代表从注册中心获取服务,且以lb(load-balance)负载均衡方式转发
uri: lb://eureka-client
#uri: http://localhost:8762
#断言
predicates:
- Path=/**
filters:
# 当访问 http://localhost:8762/aaa,加上前缀就变成 http://localhost:8762/HiController/aaa
- PrefixPath=/HiController
logging:
level:
org.springframework.cloud.gateway: debug
eureka:
client:
#服务注册地址
serviceUrl:
#注意: Eureka Server 的注册地址
#将服务提供者注册到三个Eureka Server中去
#defaultZone: http://peer1:8001/eureka/,http://peer2:8002/eureka/,http://peer3:8003/eureka/
#defaultZone: http://peer1:8001/eureka/
defaultZone: http://localhost:8761/eureka/
增加了这部分的代码
当访问 http://localhost:8769/aaa,加上前缀就变成 http://localhost:8769/HiController/aaa
2.3 启动 eureka-serve, eureka-client (8762,8763 端口),eureka-gateway-client 服务,浏览器访问 http://localhost:8761/
访问 http://192.168.0.105:8769/aaa,得到如下结果:
从结果中可以看出 filter 生效了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2022-02-28 关于使用kuboard安装其自带的监控应用授权普通用户使用
2022-02-28 关于使用kuboard安装其自带的监控应用的注意事项
2022-02-28 在 AlertManager 报警通知中展示监控图表
2019-02-28 Python高效编程技巧